Нахождение простого числа, не превосходящие заданное число M - C (СИ)
Формулировка задачи:
Напечатать все простые числа, не превосходящие заданное число M. Для ускорения вычислений полезно завести таблицу для уже найденных простых чисел и проверять делимость очередного числа на числа из этой таблицы. Четные числа, естественно, не рассматривать.
Решение задачи оформит в виде функции, которая получает в качестве параметров число M, указатель на массив, в который будут помещаться найденные простые числа.
Тут есть ещё ошибка, она считает что числа 9, 15 и т.д. простые.
Буду благодарен за помощь.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
int Simple(int m);
int Simple(int m){
for (int i=2; i*i<m; i++)
if (!(m %i)) return 0;
else {
return 1;
}
}
void main(){
int m;
int i;
printf("Vvedite celoe chislo M: ");
while (!(scanf("%d",&m))){
printf("Vveden ne vernii simvol. Vvedite celoe 4islo: ");
fflush(stdin);
}
for (int k=2;k<=m;k++){
if (Simple(k))
printf("%d ",k);
}
getch();
}Решение задачи: «Нахождение простого числа, не превосходящие заданное число M»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int simple(int k) {
for (int j = 2; j <= k - 1; ++j)
if ((k % j) == 0)
return 0;
}
void main() {
int m;
printf("\n Enter Number M: ");
while (!(scanf_s("%d", &m))){
printf("\n Correct Number Please: \n");
fflush(stdin);
}
printf("\n");
for (int i = 2; i <= m; ++i) {
if (simple(i))
printf("%4i", i);
}
printf("\n\n Press any key: ");
_getch();
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и вводом-выводом.
- Определение функции
simple, которая проверяет число на простоту. - Ввод числа M с клавиатуры и сохранение его в переменной
m. - Проверка введенного числа на корректность и повторный запрос при неверном вводе.
- Вывод на экран всех простых чисел, не превосходящие M.
- Вывод сообщения
Press any keyи ожидание нажатия клавиши.