Алгоритм нахождения простых чисел - C (СИ)

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

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

Здравствуйте, совсем недавно начал обучения Си и вроде все шло хорошо до того как мне попался один алгоритм который находит все простые числа от 0 до числа заданного пользователем. Вот весь код
#include<stdio.h>
#include <math.h>
 
int main (void)
 
{
    int a;
    printf("Input range:");
    scanf("%d", &a);
    prime(a);
 
    return 0;
}
 
int prime(int limit)
{
    int t, i , count=0, flag;
    if (limit<=0);
    else
    {   
        for(t=2 ; t<=limit ; t++)
        {
            flag=1;
            for (i=2; i*i<=t ;i++)
            {
                if (t%i==0) { flag=0; break; }
            }
            if (flag)
            {
                printf("%d ", t);
                count++;
            }
        }

    }
    return count; 
}
Собственно, хоть убей, не пойму по какому принципу работают последних два цикла . Буду благодарен если кто нибудь разъяснит в чем там заключается суть. Спасибо
и зачем ставить i ++ если по началу цикла она все ровно забрасывается до 2?

Решение задачи: «Алгоритм нахождения простых чисел»

textual
Листинг программы
#include<stdio.h>
 
main()
{
    int InputNumber,count,flag,CountTwo;
 
        printf("Intup Number:");
        scanf("%d",&InputNumber);
 
                for (count=2;count<InputNumber;count++)
                {
                    flag=1;
                    for(CountTwo=2;CountTwo<count;CountTwo++)
                    {
                        if (count==CountTwo) continue;
                        if (count%CountTwo==0) {flag=0; break;}
                    }
                    if(flag) printf("%d\n",count);                  
                }
}

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

В этом коде используется алгоритм поиска простых чисел. Он начинается с ввода числа от пользователя, затем проверяет каждое число от 2 до введенного числа на простоту. Если число простое, оно выводится на экран. Вот список переменных и их значений:

  1. InputNumber - входное число от пользователя
  2. count - переменная для цикла
  3. flag - флаг для проверки простоты числа
  4. CountTwo - переменная для внутреннего цикла Вот список шагов алгоритма:
  5. Ввод входного числа от пользователя
  6. Инициализация переменных count, flag и CountTwo
  7. Начало цикла для всех чисел от 2 до входного числа
  8. Инициализация внутреннего цикла для проверки делителей числа
  9. Проверка делителей числа от 2 до count-1
  10. Если число простое, его вывод на экран
  11. Выход из внутреннего цикла
  12. Выход из внешнего цикла

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


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

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

10   голосов , оценка 4 из 5
Похожие ответы