почему не выходит код из цикла
#include <iostream>
#include <cmath>
#include <string>
#include <conio.h>
#include <windows.h>
#include <chrono>
#include <thread>
using namespace std;
int main() {
int n, k, p;
bool flag;
setlocale(LC_ALL, "Russian");
cout << "Введите N " << endl;
cin >> n ;
for ( p = 2; p < n; p++) {
flag = true;
k = 2;
do
{
if (p > 3 && p % k == 0)
{
flag = false;
k += 1;
}
else if (flag == true) {
cout << p, " ";
}
} while (flag && k < p);
}
}
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Из цикла for или из цикла while?
Наверное, из while, потому что в for все более-менее нормально, если только k не растет вместе с p.
А вот while странный. Представим, что при входе условие
if (p > 3 && p % k == 0)
не выполнено. Происходит вход во вторую ветку (flag ведь равен true), какой-то странный (если не сказать большего :)) вывод
cout << p, " ";
Зачем после вывода p возвращать значение строки? Но это к делу не относится, а главное то, что при этом нет никаких изменений p и k, так что все остается неизменным и все опять повторяется сначала и без надежды на изменения.