ПСВ по модулю M=pr# представляет собой прошедший через решето Эратосфена
праймориал по простым числам от 2 до pr и с увеличением модуля решето
продолжает работать, оставляя в ПСВ простые и взаимно простые вычеты не кратные
простым числам, составляющим модуль.
Изучая распределение вычетов в ПСВ, можно найти определенные закономерности , которые
напрямую ведут к пониманию законов распределения простых чисел.
В отличии от натурального ряда ПСВ ограничивает интервал исследования
величиной данного модуля, причем, не увеличивая самого модуля, можно просто
увеличивать число данных модулей вплоть до следующего модуля.
За основу будем брать ПСВ по модулю
$M=7\#=210$.
который представляет собой 7 ПСВ по модулю
$m=5\#=30$за исключением вычетов кратных р = 7 и имеет 48 вычетов
Ранее, в теме была дана формула определения вычетов любой ПСВ,
но она требует больших вычислений.
Гораздо проще применить программу для определения состава любой ПСВ
в виде массива вычетов, что позволяет быстро находить различные связи
между вычетами. Я использую для программирования среду Borland C++.
На языке С++_массив означает последовательность индексированных чисел, т.е.
каждое число имеет свой порядковый номер.
Вот как выглядит программа для ПСВ по модулю М = 13# = 30030.
#include <stdio.h>
#include <conio.h>
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int p[36]={11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,
71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,
151,157,163,167,173}; // массив простых от 11 до 173 (173^2<30030)
int r;
int a[6864]={1,11,13,17,19,23,29,31,37,41,43,47,53,59,
61,67,71,73,79,83,89,97,101,103,107,109,113,121,127,131,
137,139,143,149,151,157,163,167,169,173,179,181,187,191,
193,197,199,209}; // массив вычетов ПСВ(210);
int i;
for(i=48;i<6864;i++) // 6864 = 48*143 - число вычетов в 143-х ПСВ(210)
a
=a[i-48]+210; // создание массива из 11*13 = 143 ПСВ(210)
printf("%i\t",a); getch();
r=0; L1:
for(i=0;i<6864;i++)
if(a%p[r]==0) a=33333; r++; // выделение в массиве вычетов ,кратных 11 и 13.
if(r<2) goto L1;
else
for(i=0;i<6864;i++)
printf("%i\t",a); getch();
int k,buf;
for(k=1;k<6863;k++)
{for(i=0;i<6863;i++)
if(a>a[i+1])
buf=a,a=a[i+1],a[i+1]=buf;} // сортировка вычетов по возрастанию.
printf("\n");
for(i=0;i<5760;i++) // исключение из массива вычетов = 33333.
printf("%i\t",a); getch();
}
//---------------------------------------------------------------------------
Эта же программа создает и массив простых чисел до 30030.
Для этого достаточно в условии if(r<2) поставить r<36.
Редактировалось 1 раз(а). Последний 23.08.2019 11:35.