^Back To Top
foto1 foto2 foto3 foto4 foto5 foto6 foto7 foto8 foto9 foto10 foto11 foto12 foto13 foto14 foto15 foto16 foto17 foto18 foto19 foto20 foto19

 

C++  для   Ch--

 

 

Распределение простых чисел

 

Простым числом называется отличное от 1 натуральное число, делящееся только на себя и на 1.

 

..... Задача. Написать программу нахождения первых n простых чисел в натуральном ряду.

..... Составляем программу. Шапка программы как у «calc»: состоит из трёх директив и одной строки.

..... Строка объявления переменных содержит массив num, с простым числом 2 в нулевой ячейке:

Название массива образовано от слова «number» - «число». В его ячейках будем хранить простые числа.

..... Функция simpl(n) зависит от числа n простых чисел. Начинается она с вывода на экран заголовка будущей таблицы:

..... Далее будут использованы внешний и внутренний операторы цикла for и один условный оператор if.

..... Во внутреннем операторе цикла for при помощи функции fmod из математической библиотеки находим остатки r от деления числа, находящегося в ячейке массива с номером i, на все числа из предыдущих ячеек (с номерами от k0 до  k = i - 1):

..... При помощи условного оператора if анализируем остатки от деления. Если хотя бы один окажется равным нулю (обнаружен делитель!), то управление передается внутрь фигурных скобок оператора if (отмечены красным цветом), число в ячейке увеличивается на 1, счётчик цикла обнуляется, и процесс повторяется.

..... Из внутреннего цикла программа выйдет в том случае, когда в ячейке с номером i окажется простое число, которое при помощи оператора cout появится на экране. Обозначение " \t " используют для сдвига столбцов таблицы на несколько пробелов вправо. Не забываем, что нумерация ячеек массива начинается с 0, поэтому в i-той ячейке будет находиться простое число под номером i+1

..... Внешний оператор цикла

заносит в очередную ячейку число, большее на единицу простого числа в предыдущей ячейке, и передаёт управление внутреннему оператору цикла (он находится на месте многоточия), который заносит в эту ячейку очередное простое число. Перебираем все ячейки массива с номерами от i = 0 до i = n - 1

..... Открываем компилятор Visual Studio и создаём проект «simple» - «простое число». В открывшемся файле simple.cpp всё стираем и вставляем туда приведенную ниже программу.

Стандартная схема программы «simple»


   #include "stdafx.h"
   #include <iostream>
   using namespace std; 
   #include <cmath>


double num[]={2};
void simpl(int n)
 {

   cout <<"Первые "<< n <<" простых чисел"<< endl;
      for (int i=0; i<n; i++)
    {
      num[i+1]=num[i]+1;
      for (int k=0; k<i; k++)
         {
                      double r=fmod(num[i], num[k]);
          if(r==0){num[i]=num[i]+1; k=-1;}
         }
      cout <<"\t" << i+1 <<". \t"<< num[i] << endl;
    }

     }

void main( ) 
 {
   setlocale(LC_ALL, "Rus");
   simpl(10);
   cin.get();
 }


 

..... Главная функция программы main() начинается оператором русификации текста и заканчивается фиксацией экрана. В середине при помощи функции simpl(10) вычисляем первые 10 простых чисел натурального ряда.

..... Cобираем операторы в единую программу и помещаем её в файл simple.cpp. Программа расположена слева и служит для нахождения первых n простых чисел натурального ряда.

..... Нажимаем F5 и получаем результат:

 

 

..... Чтобы  найти другое количество простых чисел натурального ряда, в главную функцию программы main в качестве аргумента функции simpl(10) подставляем вместо 10 другое число.