Поиск простых чисел - C (СИ) (77696)
Формулировка задачи:
Помогите пожалуйста
Нужно вместо оператора цикла for применить оператор while
Исходник
#include <stdio.h>
#include <conio.h>
#include <stdlib.h> // для exit()
#define Nmax 50
int main (void) {
int i, j;
int ok, in;
int N;
printf("\n Enter an integer from 2 to %d: ", Nmax);
in = scanf_s("%d", &N);
if (in == 0 || N < 2 || N > Nmax)
{
printf("\n Error input. Press any key: ");
_getch();
exit(1);
}
printf("\n Prime numbers from 2 to %d:\n\n", N);
for ( i = 2; i <= N; i++ )
{
ok = 1;
for ( j = 2; j < i; j++ )
if ( (i%j) == 0 )
ok = 0;
if ( ok )
printf(" %3d", i);
}
printf("\n\n Press any key: ");
_getch();
return 0;
}Маленько изменил, а дальше не знаю!!!
printf("\n Prime numbers from 2 to %d:\n\n", N);
i=2;
while (i <=N)
{
i++;
j=2;
while (j<i)
if ( (i%j) == 0 )
{
j++;
}
printf (" %3d",i);
i++;
}
printf("\n\n Press any key: ");
_getch();
return 0;
}Решение задачи: «Поиск простых чисел»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#define Nmax 50
int main () {
int i, j;
int ok, in;
int N;
printf("\n Enter an integer from 2 to %d: ", Nmax);
in = scanf("%d", &N);
if (in == 0 || N < 2 || N > Nmax)
{
printf("\n Error input. Press any key: ");
return 1;
}
printf("\n Prime numbers from 2 to %d:\n\n", N);
i = 2;
while(i <= N)
{
j = 2;
int simple = 1;
while(j <= sqrt(i))
{
if(!(i % j))
{
j = i;
simple = 0;
}
j++;
}
if(simple)
printf(" %3d", i);
i++;
}
printf("\n\n Press any key: ");
return 0;
}
Объяснение кода листинга программы
Вот что делает этот код:
- Включает необходимые заголовочные файлы:
stdio.hиmath.h. Они содержат функции и структуры, которые используются в программе. - Определяет максимальное значение N, которое может быть введено (Nmax = 50).
- Запрашивает у пользователя ввод целого числа от 2 до Nmax.
- Проверяет корректность ввода. Если ввод некорректен (N < 2 или N > Nmax), программа выводит сообщение об ошибке и просит пользователя нажать любую клавишу.
- Выводит список простых чисел от 2 до N.
- Начинает цикл с i = 2.
- Внутри цикла проверяет, является ли текущее число i простым. Для этого используется вложенный цикл, который проверяет, делится ли i на какое-либо число от 2 до sqrt(i). Если делится, то число не является простым.
- Если текущее число i простое, оно выводится на экран.
- После окончания внутреннего цикла, увеличивается значение i на 1.
- После окончания внешнего цикла, программа завершается и ожидает ввода пользователя.