Даю 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;
}
а да, но это не важно
Подскажи пожалуйста, а ты уже нашёл решение этой задачи?
Ответы
Ответ дал:
1
#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:: везде, просто привык писать без using namespace std;
это кстати плохая практика, лучше с std:: писать, не будет запутываний
это кстати плохая практика, лучше с std:: писать, не будет запутываний
понял, спасибо, но он то же на третьем тесте летит, не люблю дописывать чужие коды, особенно такие не понятные как на сириусе, но всё равно спасибо за помощь))
не за что!
Вас заинтересует
2 года назад
2 года назад
2 года назад
8 лет назад
8 лет назад
у меня ошибка выдается