Алгоритм нахождения простых чисел - 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 до введенного числа на простоту. Если число простое, оно выводится на экран. Вот список переменных и их значений:
- InputNumber - входное число от пользователя
- count - переменная для цикла
- flag - флаг для проверки простоты числа
- CountTwo - переменная для внутреннего цикла Вот список шагов алгоритма:
- Ввод входного числа от пользователя
- Инициализация переменных count, flag и CountTwo
- Начало цикла для всех чисел от 2 до входного числа
- Инициализация внутреннего цикла для проверки делителей числа
- Проверка делителей числа от 2 до count-1
- Если число простое, его вывод на экран
- Выход из внутреннего цикла
- Выход из внешнего цикла