Поиск простых чисел - C (СИ) (77696)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста Нужно вместо оператора цикла for применить оператор while Исходник
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h> // для exit()
  4. #define Nmax 50
  5. int main (void) {
  6. int i, j;
  7. int ok, in;
  8. int N;
  9. printf("\n Enter an integer from 2 to %d: ", Nmax);
  10. in = scanf_s("%d", &N);
  11. if (in == 0 || N < 2 || N > Nmax)
  12. {
  13. printf("\n Error input. Press any key: ");
  14. _getch();
  15. exit(1);
  16. }
  17. printf("\n Prime numbers from 2 to %d:\n\n", N);
  18. for ( i = 2; i <= N; i++ )
  19. {
  20. ok = 1;
  21. for ( j = 2; j < i; j++ )
  22. if ( (i%j) == 0 )
  23. ok = 0;
  24. if ( ok )
  25. printf(" %3d", i);
  26. }
  27. printf("\n\n Press any key: ");
  28. _getch();
  29. return 0;
  30. }

Маленько изменил, а дальше не знаю!!!

Листинг программы
  1. printf("\n Prime numbers from 2 to %d:\n\n", N);
  2. i=2;
  3. while (i <=N)
  4. {
  5. i++;
  6. j=2;
  7. while (j<i)
  8. if ( (i%j) == 0 )
  9. {
  10. j++;
  11. }
  12. printf (" %3d",i);
  13. i++;
  14. }
  15. printf("\n\n Press any key: ");
  16. _getch();
  17. return 0;
  18. }

Решение задачи: «Поиск простых чисел»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define Nmax 50
  5.  
  6. int main () {
  7. int i, j;
  8. int ok, in;
  9. int N;
  10.  
  11. printf("\n Enter an integer from 2 to %d: ", Nmax);
  12. in = scanf("%d", &N);
  13.  
  14. if (in == 0 || N < 2 || N > Nmax)
  15. {
  16. printf("\n Error input. Press any key: ");
  17. return 1;
  18. }
  19.  
  20. printf("\n Prime numbers from 2 to %d:\n\n", N);
  21.  
  22. i = 2;
  23.  
  24. while(i <= N)
  25. {
  26.     j = 2;
  27.  
  28.     int simple = 1;
  29.  
  30.     while(j <= sqrt(i))
  31.     {
  32.         if(!(i % j))
  33.         {
  34.             j = i;
  35.             simple = 0;
  36.         }
  37.  
  38.         j++;
  39.     }
  40.  
  41.     if(simple)
  42.         printf(" %3d", i);
  43.  
  44.     i++;
  45. }
  46.  
  47. printf("\n\n Press any key: ");
  48. return 0;
  49. }

Объяснение кода листинга программы

Вот что делает этот код:

  1. Включает необходимые заголовочные файлы: stdio.h и math.h. Они содержат функции и структуры, которые используются в программе.
  2. Определяет максимальное значение N, которое может быть введено (Nmax = 50).
  3. Запрашивает у пользователя ввод целого числа от 2 до Nmax.
  4. Проверяет корректность ввода. Если ввод некорректен (N < 2 или N > Nmax), программа выводит сообщение об ошибке и просит пользователя нажать любую клавишу.
  5. Выводит список простых чисел от 2 до N.
  6. Начинает цикл с i = 2.
  7. Внутри цикла проверяет, является ли текущее число i простым. Для этого используется вложенный цикл, который проверяет, делится ли i на какое-либо число от 2 до sqrt(i). Если делится, то число не является простым.
  8. Если текущее число i простое, оно выводится на экран.
  9. После окончания внутреннего цикла, увеличивается значение i на 1.
  10. После окончания внешнего цикла, программа завершается и ожидает ввода пользователя.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы