Вывести простые числа из последовательности - C (СИ)
Формулировка задачи:
Необходимо создать последовательность из n чисел, найти в ней количество простых чисел и вывести его на печать или напечатать простые числа отдельной последовательностью. Очень прошу объяснить оба варианта.
Вот то до чего дошёл я:
Где здесь ошибка(и)?
Заранее спасибо.
#include <stdio.h>
main()
{
int i,s,n,k,r;
//s- кол-во простых чисел; k - кол-во делителей.
s=0;
srand(time(NULL));
for(i=0;i<15;i++)
{
n=rand()%(11-3)+3;
printf("%3d",n);
}
r=n/2;
for(i=2;i<r;i++)
{
if (n%i==0) k++;
if (k==0) s++;
}
printf ("\n s=%d \n",s);
}
getch();
return 0;
}Решение задачи: «Вывести простые числа из последовательности»
textual
Листинг программы
#include <iostream>
#include <conio.h>
#include <math.h>
int main()
{
int number = 0;
int msv[10];
for(int i=0; i < 10; i++)
{
msv[i] = rand() % (11 - 3) + 3;
printf("%d ", msv[i]);
}
printf("\nProstie chisla:\n");
for (int i=0; i < 10; i++)
{
for (int j=2; j <= sqrt((double)msv[i]); j++)
{
if (msv[i]%j == 0 && msv[i] != j)
{
msv[i] = 0;
break;
}
}
if (msv[i] != 0)
{
number++;
printf("%d ", msv[i]);
}
}
printf("\nKolichestvo prostix chisel: %d\n",number);
getch();
return 0;
}
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Инициализируются переменные:
numberинициализируется значением 0;- массив
msvинициализируется значениями, полученными с помощью функцииrand().
- С помощью цикла
forвыводятся значения массиваmsvна экран через пробел. - Выводится сообщение
Prostie chisla:и начинается циклfor, который проверяет все числа из массиваmsvна простоту. Для этого используется вложенный циклfor, который проверяет делители от 2 до квадратного корня из текущего числа. Если число делится на какое-то из этих значений без остатка и не равно этому значению, оно считается простым и записывается в массивmsvравным 0. - Если число не равно 0, увеличивается значение переменной
numberи число выводится на экран через пробел. - После окончания второго цикла выводится сообщение
Kolichestvo prostix chisel:и значение переменнойnumber. - В конце программы вызывается функция
getch(), которая ожидает нажатия клавиши, и функцияreturn 0;, которая завершает выполнение программы.