Поиск простых чисел - 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.
- После окончания внешнего цикла, программа завершается и ожидает ввода пользователя.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д