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