Даю 100 баллов на C++ надо написать программу. Задание с Сириуса: Выведите в порядке возрастания все простые числа на отрезке [l;r]. Оформите решение в виде функции bool isPrime(int n), проверяющей число на простоту, и функции vector primes(int l, int r), возвращающей список простых чисел на отрезке [l;r]. Входные данные: Дано два натуральных числа l и r (l≤r≤1000).
#include 
 #include 
 using namespace std;
 bool isPrime(int n)
 /* ВАШ КОД */
 int main()
 {
 int l, r;
 cin >> l >> r;
 vector res = primes(l, r);
 for (int i = 0; i < res.size(); ++i){
 cout << res[i] << " ";
 }
 return 0;
 }
Вот мой фрагмент кода который валится на 3-ем тесте:
 {
 for(int i = 2; i <= n / 2; i++){
 if(!(n % i)){
 return 0;
 }
 }
 return 1;
 }
 vector primes(int l, int r){
 vector A;
 for(int i = l; i <= r; i++){
 if(isPrime(i)){
 A.push_back(i);
 }
 }
 return A;
 }
Информатика 10 класс Программирование C++ программа простые числа функция isPrime функция primes отрезок [l;r] натуральные числа алгоритм проверки простоты вывод простых чисел решение задачи код на C++ тестирование программы
Для решения задачи по нахождению простых чисел на отрезке [l; r] необходимо правильно реализовать функции isPrime и primes. Давайте разберем каждую из них и исправим ошибки в вашем коде.
1. Функция isPrime
Функция isPrime должна проверять, является ли число простым. Простое число - это натуральное число больше 1, которое не имеет делителей, кроме 1 и самого себя. В вашем коде есть ошибка: функция возвращает 0 (ложь) для простых чисел. Правильная реализация должна выглядеть следующим образом:
bool isPrime(int n) {
    if (n <= 1) return false; // Числа меньше или равные 1 не простые
    for (int i = 2; i * i <= n; i++) { // Проверяем делители до корня из n
        if (n % i == 0) return false; // Если n делится на i, то не простое
    }
    return true; // Если не нашли делителей, то n простое
}
2. Функция primes
Функция primes должна возвращать вектор простых чисел на заданном отрезке. Ваша реализация в целом верная, но давайте убедимся, что она использует исправленную функцию isPrime:
vectorprimes(int l, int r) { vector A; // Создаем вектор для хранения простых чисел for (int i = l; i <= r; i++) { // Проходим по всем числам от l до r if (isPrime(i)) { // Если число простое A.push_back(i); // Добавляем его в вектор } } return A; // Возвращаем вектор простых чисел } 
3. Основная функция main
Теперь, когда функции определены, ваша основная функция main должна выглядеть следующим образом:
#include#include using namespace std; bool isPrime(int n) { if (n <= 1) return false; for (int i = 2; i * i <= n; i++) { if (n % i == 0) return false; } return true; } vector primes(int l, int r) { vector A; for (int i = l; i <= r; i++) { if (isPrime(i)) { A.push_back(i); } } return A; } int main() { int l, r; cin >> l >> r; // Вводим границы отрезка vector res = primes(l, r); // Получаем вектор простых чисел for (int i = 0; i < res.size(); ++i) { cout << res[i] << " "; // Выводим простые числа } return 0; } 
Теперь программа должна корректно работать для всех тестов, включая третий. Убедитесь, что вы правильно вводите значения l и r, и программа выведет все простые числа на заданном отрезке в порядке возрастания.