Может кто нибудь подсказать, что не так с этим алгоритмом? Проблема в том, что при запуске некоторые числа отображаются в командной строке по несколько раз. В итоге получается, что некоторые числа начала не отображаются и вовсе, если задать number как 200.
Сам код:
#include <iostream>
using namespace std;
int main ()
{
int number;
for (number = 3; number<=20; number++)
{
for (int counter = 2; counter*counter<=number; counter++)
{
if( number% counter == 0)
{
break;
}
else{
cout<<number<<endl;
}
}
}
return 0;
}
Вы на каждый неделитель выводите число...
Вот что вы хотели:
#include <iostream>
using namespace std;
int main ()
{
int number;
for (number = 3; number<=200; number++)
{
bool prime = true;
for (int counter = 2; counter*counter<=number; counter++)
{
if( number% counter == 0)
{
prime = false;
break;
}
}
if (prime) cout << number << endl;
}
return 0;
}
Но учтите, что это далеко не самый эффективный метод...
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники