Даю 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;
}
Answers & Comments
#include <iostream>
#include <vector>
std::vector<int> primes(int l, int r);
bool isPrime(int n);
int main()
{
int l,r;
std::cin >> l >> r;
std::vector<int> res = primes(l, r);
for (int i = 0;i < res.size();i++)
{
std::cout << res[i] << " ";
}
return 0;
}
std::vector<int> primes(int l, int r)
{
std::vector<int> primes;
for (int i = l; i < r; i++)
{
if (isPrime(i))
{
primes.push_back(i);
}
}
return primes;
}
bool isPrime(int n)
{
if (n <= 2)
return false;
for (int i = 3; i < n/2+1; i++)
if (n % i == 0)
return false;
return true;
}
это кстати плохая практика, лучше с std:: писать, не будет запутываний