Deutsch

Мои программы

07.02.25 23:04
Re: Мои программы
 
alek4 Забанен до 17/8/25 16:22 старожил
в ответ alek4 31.01.25 14:13, Последний раз изменено 07.02.25 23:14 (gendy)

ПРОГРАММА «Простые 2»

ОГЛАВЛЕНИЕ

1. Общее

2. Математика

3. Вывод

4.Анализ результатов

5.Скачать программу «Простые 2»

Приложение 1

Распечатка программы «Простые 2»

1. Общее

В программе «Простые 1» исследован многочлен a*x*x +b*x +cв части генерации простых чисел.

Коэффициенты задаются.

В скатерти Улама по диагонали значения этого многочлена при разных последовательностях x.

Для трёх значений предполагаемого многочлена d1, d2, d3 при x1, x2, x3 можно отыскать значениякоэффициентов

a, b, c.

2. Математика

Для

x1 =1

x2 = 2

x3=3

коэффициенты находятся по формулам

d:=((k3-2*k2+k1) Mod 2 ) ;

If (d>0) then

fa:=111else

begin

a:= (k3-2*k2+k1)div 2;

b:= k2-k1-3*a;

c:= k1-a-b;

end;

d:=((k6-2*k5+k4) Mod 2 ) ;

If (d>0) then

fb:=222else

begin

a1:= (k6-2*k5+k4)div 2;

b1:= k5-k4-3*a;

c1:= k4-a-b;

end;

Продолжение расчётов, если коэффициенты целые числа.

Если коэффициенты дробные, выводятся соответственно для многочленов № 1 и № 2:

fa =111 иfb=222.

Дальнейшие вычисления те же, что и в Программе «Простые 1».

3. Вывод

Вывод тот же, что в программе «Простые 1».

Дополнен выводом чисел fa иfb.

4.Анализ результатов

По диагональным числам Скатерти Улама часто удается найти многочлен с большей долей простых чисел, чем в ряду натуральных чисел.

5.Скачать программу «Простые 2»

https://disk.yandex.ru/d/M3YYAVqN3TQuQQ

Приложение 1

Распечатка программы «Простые 2»

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Edit1: TEdit;

Label2: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label3: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

n =20000;// число вычмислений значений многочленов

// k1 =1499;

//k2=1657;

//k3=1823;

k1 =3463;

k2=3701;

k3=3947;

//fb=222

//k4=2;

//k5=3;

//k6=17;

k4=1823;

k5= 1997;

k6= 2179;

var

Tick: Cardinal;

s1:array [1..n] of integer;// значения многочлена № 1

s2:array [1..n] of integer;//1 -простое число, 0 - составное число

//многочлен № 1

s3:array [1..n] of integer;// значения многочлена № 2

s4:array [1..n] of integer;// 1 -простое число, 0 - составное число

//многочлен № 21

s5:array [1..n] of integer;// простые числа натурального ряда

s6:array [1..n] of integer;//составные числа нарурального ряда

s7:array [1..n] of integer;//ряд простых чисел

s8:array [1..50] of integer;// сравнение максимальных

//цепей простых чисел в многочленах№1 и №2

r,w, w1, w2, k,f,g, h, ha,q,i,j : integer; //

j1,j2,j3,j4,j5,j6,j7,j8,i2,i1, i3,i4,i5,i6,i7,i8,i9,i0, l: integer; //

x1, x2, z,z1, z2, z3, z4,z5, z6,z7, v,v1,v2, e: integer;//

m, m1, m2, mm, a2,m3,m4,m5 ,vv: integer;//

y, y1, y2,y3, d, p, s, t, u1,u2 , p1, t1, u3,u4 :integer;//

h1,h2,h3: variant;//

n1, n2, n3,n4: cardinal;//

d1, d2, d3, d4: variant;//

a, b, c, a1, b1, c1, fa, fb:integer;//

// Функция нахождения простых чисел

// По книгеЖуков "Программируем в Delphi"

function good(Numb:integer):boolean;

var

i:integer;

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

good:= true;

for i:=2 to Trunc(Sqrt(Numb)) do

if (Numb mod i) =0then

begin

good := false;

exit;

end; end;

procedure TForm1.Button1Click(Sender: TObject);

// окантовка

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid2.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid2.Cells[0,q]:=IntToStr(q);

// Вычисление коэффициентов многочлена

d:=((k3-2*k2+k1) Mod 2 ) ;

If (d>0) then

fa:=111else

begin

a:= (k3-2*k2+k1)div 2;

b:= k2-k1-3*a;

c:= k1-a-b;

end;

d:=((k6-2*k5+k4) Mod 2 ) ;

If (d>0) then

fb:=222else

begin

a1:= (k6-2*k5+k4)div 2;

b1:= k5-k4-3*a;

c1:= k4-a-b;

end;

////////////////// a b c

//////////////////////////////////

if fa=0 then begin

for i:=1 to ndo

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

s1:=(a*i*i + b*i + c);

if s1<=0 then begin v:=i; break

end; end;

for j:= 1 to N dobegin

IF S1[j]> 0 then

if good (s1[j]) then

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

s2[j]:=1 ; z1:= z1+1; end

elsebegin s2[j]:=0;z2:= z2+1;

end;end;

// простые - многочлен № 1

for i:=1 to n dobegin

if s2=1 then m:=m+1 ;

if s2 =0 then begin

if m>w then

beginw:=m;j1:= i-1;end;

m:=0

end;

end;

//end;

j2 := j1-w+1;

//составные - многочлен № 1

for i:=1 to n dobegin

if ((s2[i-1] =1) and(s2 =0)) then y1 := i ;

if s2=0 thent:=t+1 ;

if s2 =1 then begin

if t>s then

begins:=t; u1:= i-1;end;

end;

if s2 =1 then t:=0;

end;

u2 := u1-s+1;

end;

///////////a1 b1 c1

if fb =0 then begin

for i:=1 to ndo

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

s3:=(a1*i*i+ b1*i+ c1);

if s3<=0 then begin v1:=i; break

end; end;

for j:= 1 to N dobegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

IF S3[j]> 0 then

if good (s3[j]) then

begin

s4[j]:=1 ; z3:= z3+1; end

elsebegin s4[j]:=0;z4:= z4+1;

end;end;

m1:=0;

for i:=1 to n dobegin//простые- многгочлен № 2

if s4=1 then m1:=m1+1 ;

if s4 =0 then begin

if m1>w1 then

begin w1:=m1;j3:= i-1;end;

m1:=0

end;

end;

j4 := j3-w1+1;

//составные- многочлен № 2

for i:=1 to n dobegin

if ((s4[i-1] =1) and(s4 =0)) then y2 := i ;

if s4=0 then t1:=t1+1 ;

if s4 =1 then begin

if t1>d then

begind:=t1;u3:= i-1;t1:=0; end;

if s2 =0 then t1 :=0;

end;

end;

u4 := u3-d+1;

end;

/////////////////////////////натуральный ряд чисел

for j:= 1 to N dobegin

if good (j) then

begin

s5[j]:=j ; z5:= z5+1; end

elsebegin s6[j]:=j;z6:= z6+1;

end;end;

m2:=0;

// натуральный ряд составные числа

for i:=1 to n dobegin

if ((s5[i-1] >0) and(s6 >0)) then y3 := i ;

if s5=0 then m2:=m2+1 ;

if s5 >0 then begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

if m2>w2 then

beginw2:=m2;j5:= i-1;end;

m2:=0

end;

end;

j6 := j5-w2+1;

// ряд простых числел

for j:= 1 to N do

if good (j) then

begin

z7:= z7+1; s7[z7]:=j end;

// частное простых и всех чисел

h1 := z1/n;//многочлен № 1

h2 := z3/n;//многочлен № 2

h3:= z5/n; // ряд натуральных чисел

for i:= 1 to n do

n1 := n1 + s1;

for i:= 1 to n do

n2 := n2 + s3;

for i:= 1 to n do

begin

if s5>0 then n3 := n3+s5;

if s6>0 then n3 := n3+s6;

end;

for i:= 1 to n do

n4 := n4 + s7;

d1 :=n1/n;

d2 :=n2/n;

d3 :=n3/n;

d4 := n4/z7;

for i:= j2 to j1 do

for j:= j4to j3 do

ifs1 = s3[j] then s8 :=s1 ;

//////////////////////////

for i:=1 to ndobegin

StringGrid2.Cells[i,1]:=

IntToStr( s1);

StringGrid2.Cells[i,2]:=

IntToStr( s2);

StringGrid2.Cells[i,4]:=

IntToStr( s3);

StringGrid2.Cells[i,5]:=

IntToStr( s4);

ifs5=0 then

StringGrid2.Cells[i,7]:= '-';

ifs5>0 then

StringGrid2.Cells[i,7]:=IntToStr(i);

ifs5>0 then

StringGrid2.Cells[i,8]:= '-';

ifs5=0 then

StringGrid2.Cells[i,8]:=IntToStr( i);

IntToStr( s6);

StringGrid2.Cells[i,10]:=

IntToStr( s7);

// выоод простых чисел с 41

// if s7>=41 then

// StringGrid2.Cells[i-13,10]:=

// IntToStr( s7);

StringGrid2.Cells[i,10]:=

IntToStr( s7);

end;

for i:=1 to 50do

if i<=w then

StringGrid2.Cells[i,12]:=

IntToStr( s8)

else StringGrid2.Cells[i,12]:='-';

Edit1.Text :=

'a='+' '+IntToStr(a)+''+

'b='+' '+IntToStr(b)+''+

'c='+''+IntToStr(c)+''+

'v='+''+IntToStr(v)+''+

'z1='+''+IntToStr(z1)+''+

'z2='+''+IntToStr(z2)+''+

'w='+''+IntToStr(w)+''+

'm='+''+IntToStr(m) +''+

'j1='+''+IntToStr(j1) +''+

'j2='+' '+IntToStr(j2) +''+

's='+''+IntToStr(s) +''+

't='+''+IntToStr(t)+''+

'u1='+''+IntToStr(u1) +''+

'u2='+' '+IntToStr(u2) +''+

'y1='+' '+IntToStr(y1) +''+

's2[n]='+' '+IntToStr(s2[n]) +''+

'd1='+' '+FormatFloat('0.00000',d1) +''+

'h1='+' '+FormatFloat('0.00000',h1);

Edit2.Text :=

'a1='+''+IntToStr(a1)+''+

'b1='+' '+IntToStr(b1)+''+

'c1='+''+IntToStr(c1)+''+

'v1='+''+IntToStr(v1)+''+

'z3='+''+IntToStr(z3)+''+

'z4='+''+IntToStr(z4)+''+

'w1='+''+IntToStr(w1)+''+

'm1='+''+IntToStr(m1) +''+

'j3='+''+IntToStr(j3) +''+

'j4='+' '+IntToStr(j4)+''+

'd='+''+IntToStr(d) +''+

't1='+''+IntToStr(t1)+''+

'u3='+''+IntToStr(u3) +''+

'u4='+' '+IntToStr(u4) +''+

'y2='+' '+IntToStr(y2) +''+

's4[n]='+' '+IntToStr(s4[n]) +''+

'd2='+' '+FormatFloat('0.00000',d2)+''+

'h2='+' '+ FormatFloat('0.00000',h2);

Edit3.Text :=

'v2='+''+IntToStr(v2)+''+

'z5='+''+IntToStr(z5)+''+

'z6='+''+IntToStr(z6)+''+

'w2='+''+IntToStr(w2)+''+

'm2='+''+IntToStr(m2) +''+

'j5='+''+IntToStr(j5) +''+

'j6='+''+IntToStr(j6) +''+

'y3='+''+IntToStr(y3) +''+

's5[n]='+' '+IntToStr(s5[n]) +''+

'd3='+' '+FormatFloat('0.00000',d3)+''+

'h3='+''+FormatFloat('0.00000',h3);

Edit4.Text :=

'n4='+''+IntToStr(n4) +''+

'z7='+''+IntToStr(z7) +''+

'd4='+' '+FormatFloat('0.00000',d4)+''+

'fa='+''+IntToStr(fa) +''+

'fb='+''+IntToStr(fb) ;

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

 

Перейти на