Вывести простые числа из последовательности - 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;
}

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

В этом коде выполняется следующая последовательность действий:

  1. Инициализируются переменные:
    • number инициализируется значением 0;
    • массив msv инициализируется значениями, полученными с помощью функции rand().
  2. С помощью цикла for выводятся значения массива msv на экран через пробел.
  3. Выводится сообщение Prostie chisla: и начинается цикл for, который проверяет все числа из массива msv на простоту. Для этого используется вложенный цикл for, который проверяет делители от 2 до квадратного корня из текущего числа. Если число делится на какое-то из этих значений без остатка и не равно этому значению, оно считается простым и записывается в массив msv равным 0.
  4. Если число не равно 0, увеличивается значение переменной number и число выводится на экран через пробел.
  5. После окончания второго цикла выводится сообщение Kolichestvo prostix chisel: и значение переменной number.
  6. В конце программы вызывается функция getch(), которая ожидает нажатия клавиши, и функция return 0;, которая завершает выполнение программы.

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


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

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

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