Alkulukulauseen tutkimusta

Onko taipuvaisuutta nörttiyteen? Saa esittää omia nörtti-projekteja
Avatar
Keckuli
Reactions:
Viestit: 415
Liittynyt: 29 Marras 2022, 22:04
Paikkakunta: Helsinki
Viesti:

Alkulukulauseen tutkimusta

Viesti Kirjoittaja Keckuli »

Wikipediasta kopsattua:
"Alkulukulause antaa alkulukujen jakauman asympoottisen arvion. Karkeasti ottaen alkulukulauseen mukaan satunnaisesti valittu positiivinen kokonaisluku n on todennäköisyydellä 1 / ln n alkuluku, missä ln n on luvun n luonnollinen logaritmi.

Luvun n kasvaessa alkuluvut käyvät yhä harvemmiksi. Esimerkiksi kun n = 10 000, keskimäärin joka yhdeksäs luku on alkuluku, kun taas arvolla n = 1 000 000 000 suunnilleen joka 21. luku on alkuluku. Alkulukulause antaa arvion tälle harvenemisnopeudelle."


No tutkitaanpa. Laskin miljardia pienemmät alkuluvut ja sain, että alkulukuja välillä (miljardi-10 miljoonaa):sta - miljardiin on 4.82825% mikä tarkoittaa, että joka 20.71143789.s luku eli karkeasti ottaen joka 21.s luku on alkuluku eli ohjelmani toiminee oikein! :)

Koodi: Valitse kaikki

Program Alkulukulause;
uses math,sysutils,DateUtils;
CONST maxind = 1000000000; {lasketaan miljardia pienemmät alkuluvut}
VAR	  taulukko	: ARRAY[1..maxind] OF BOOLEAN;
	lkm, ind, luku, osumia, indeksi, j, i :	Longword;	
	neliojuuri, floatindeksi	:	Float;
	aika1, aika2	:	Double;
begin
	aika1:=Now;
	lkm:=maxind;
	neliojuuri:= Sqrt(lkm);
	for ind:=2 to maxind do taulukko[ind]:=true; {oletetaan kaikki alkuluvuiksi}
	taulukko[1]:= false;
	luku:=2;
	ind:=luku;
	while ind<=lkm do {poistetaan 2:n monikerrat}
		begin
			taulukko[ind]:= false; 
			ind:=ind+2; 
		end;
	while (luku < neliojuuri) do
		begin
			while (taulukko[luku] = false) and (luku < neliojuuri) do 
			{etsitään seuraava alkuluku}
				luku:=luku + 1;
			ind:=luku + luku;
			while ind < lkm do {poistetaan sen monikerrat}
				begin
					taulukko[ind]:= false;
					ind:=ind+luku;
				end;
			luku:= luku + 1;
		end;
	taulukko[2]:= true;
	{Nyt on taulukoitu miljardia pienemmät alkuluvut. 
	 Tulostetaan sataa pienemmät kokeeksi.}
	 aika2:=Now;
	 Writeln((aika2-aika1)*86400,' sekuntia.');
	for ind:=1 to 100 do 
			if taulukko[ind]=true then writeln (ind);
	//Tutkitaan alkulukulausetta
	//kaydaan läpi 10 miljoonan askelissa
	i:=1;
	while i<maxind do
		begin
			osumia:=0;
			indeksi:=i;
			for j:=(i+1) to (i+10000000) do 
				begin
					if taulukko[indeksi] then osumia:=osumia + 1;
					indeksi:=indeksi+1;
				end;
				floatindeksi:=float(indeksi);
				writeln ('Vali ',i,'-',i+10000000,'    ',(100 * (osumia/10000000)),'%  ',((100 * 1 / lnxp1(floatindeksi))),'%');	
				i:=i+10000000;	
		end;
end.
yo koodi tulostaa vähän modifioiden:

1.3281999598257244E+001 sekuntia.
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
Väli Empiirinen arvo välillä Lausekkeen 1/ln n arvo
Vali 1-10000001 6.64579000000000000032 6.20420680734781149245
Vali 10000001-20000001 6.06028000000000000025 5.94840015145559385459
Vali 20000001-30000001 5.87252000000000000000 5.80831131964645920249
Vali 30000001-40000001 5.75795000000000000004 5.71285258414354012863
Vali 40000001-50000001 5.67480000000000000008 5.64094262841298786171
Vali 50000001-60000001 5.60981000000000000006 5.58351807665779190700
Vali 60000001-70000001 5.55948999999999999991 5.53587066727784143320
Vali 70000001-80000001 5.51318000000000000031 5.49524909904148691105
Vali 80000001-90000001 5.47572000000000000007 5.45990998968082639218
Vali 90000001-100000001 5.44500999999999999975 5.42868101789653237929
Vali 100000001-110000001 5.41854000000000000014 5.40073714194259731905
Vali 110000001-120000001 5.38338999999999999989 5.37547640395641413563
Vali 120000001-130000001 5.36538999999999999995 5.35244655636101272257
Vali 130000001-140000001 5.34012000000000000002 5.33129947958555601472
Vali 140000001-150000001 5.32197000000000000012 5.31176166991351913051
Vali 150000001-160000001 5.30062000000000000006 5.29361445875982871302
Vali 160000001-170000001 5.28625000000000000010 5.27668035829230100018
Vali 170000001-180000001 5.27302000000000000010 5.26081339387544351036
Vali 180000001-190000001 5.25087999999999999971 5.24589210643315193711
Vali 190000001-200000001 5.23464000000000000004 5.23181438812881621390
Vali 200000001-210000001 5.22688999999999999967 5.21849360497166689550
Vali 210000001-220000001 5.20913999999999999995 5.20585564066522369590
Vali 220000001-230000001 5.20033000000000000026 5.19383661157222824723
Vali 230000001-240000001 5.18971000000000000016 5.18238107834371554937
Vali 240000001-250000001 5.17773999999999999999 5.17144063038207348016
Vali 250000001-260000001 5.16541999999999999977 5.16097275383009217956
Vali 260000001-270000001 5.15523999999999999995 5.15093991773543585268
Vali 270000001-280000001 5.14685000000000000006 5.14130882993265694468
Vali 280000001-290000001 5.13594000000000000007 5.13204982627107187624
Vali 290000001-300000001 5.12661999999999999991 5.12313636558079306968
Vali 300000001-310000001 5.12195999999999999983 5.11454460920321275384
Vali 310000001-320000001 5.10685000000000000010 5.10625306869004307693
Vali 320000001-330000001 5.10269000000000000003 5.09824230886082470924
Vali 330000001-340000001 5.09130000000000000008 5.09049469612673155354
Vali 340000001-350000001 5.08921000000000000024 5.08299418406766082392
Vali 350000001-360000001 5.07761999999999999976 5.07572612985389415166
Vali 360000001-370000001 5.07117000000000000019 5.06867713635154558101
Vali 370000001-380000001 5.06968000000000000018 5.06183491572913206230
Vali 380000001-390000001 5.05837000000000000001 5.05518817115474126131
Vali 390000001-400000001 5.05116000000000000018 5.04872649378692528802
Vali 400000001-410000001 5.04387000000000000014 5.04244027275325845325
Vali 410000001-420000001 5.03765999999999999990 5.03632061620542227642
Vali 420000001-430000001 5.03570999999999999999 5.03035928185926958182
Vali 430000001-440000001 5.02505000000000000022 5.02454861568834494330
Vali 440000001-450000001 5.02482999999999999964 5.01888149765199129918
Vali 450000001-460000001 5.01510000000000000014 5.01335129351393474564
Vali 460000001-470000001 5.01169999999999999990 5.00795181195153241583
Vali 470000001-480000001 5.00705999999999999987 5.00267726627553395392
Vali 480000001-490000001 4.99943999999999999983 4.99752224017986997886
Vali 490000001-500000001 4.99498999999999999987 4.99248165702432121233
Vali 500000001-510000001 4.98384999999999999971 4.98755075222288333332
Vali 510000001-520000001 4.98435000000000000015 4.98272504836959097014
Vali 520000001-530000001 4.98011000000000000031 4.97800033278340998012
Vali 530000001-540000001 4.97682999999999999994 4.97337263719609982623
Vali 540000001-550000001 4.96975000000000000002 4.96883821934294952084
Vali 550000001-560000001 4.96794000000000000004 4.96439354624703362224
Vali 560000001-570000001 4.96136000000000000013 4.96003527901396668942
Vali 570000001-580000001 4.95889000000000000016 4.95576025897675412693
Vali 580000001-590000001 4.95368999999999999996 4.95156549504982234711
Vali 590000001-600000001 4.95159000000000000009 4.94744815216814144351
Vali 600000001-610000001 4.94740999999999999997 4.94340554070192870172
Vali 610000001-620000001 4.93943999999999999988 4.93943510675007517495
Vali 620000001-630000001 4.93840999999999999978 4.93553442322645023440
Vali 630000001-640000001 4.93221000000000000000 4.93170118166284575118
Vali 640000001-650000001 4.92945000000000000014 4.92793318466072096350
Vali 650000001-660000001 4.92775000000000000001 4.92422833893126891090
Vali 660000001-670000001 4.92149000000000000007 4.92058464886978803605
Vali 670000001-680000001 4.91847999999999999999 4.91700021061602906940
Vali 680000001-690000001 4.91579999999999999990 4.91347320655720095099
Vali 690000001-700000001 4.91184000000000000035 4.91000190023474835212
Vali 700000001-710000001 4.90974000000000000005 4.90658463161993296320
Vali 710000001-720000001 4.90142999999999999993 4.90321981272672593240
Vali 720000001-730000001 4.90121999999999999982 4.89990592353360548137
Vali 730000001-740000001 4.89817000000000000006 4.89664150818859996448
Vali 740000001-750000001 4.89193999999999999976 4.89342517147436406426
Vali 750000001-760000001 4.89038000000000000001 4.89025557551226044799
Vali 760000001-770000001 4.88760000000000000009 4.88713143668637240401
Vali 770000001-780000001 4.88497000000000000013 4.88405152277012182156
Vali 780000001-790000001 4.88777000000000000010 4.88101465023973517948
Vali 790000001-800000001 4.87925999999999999990 4.87801968176020857987
Vali 800000001-810000001 4.88007999999999999988 4.87506552383068941748
Vali 810000001-820000001 4.87314999999999999992 4.87215112457733287663
Vali 820000001-830000001 4.86901999999999999993 4.86927547168271995966
Vali 830000001-840000001 4.87006000000000000005 4.86643759044185243538
Vali 840000001-850000001 4.86555999999999999996 4.86363654193557967990
Vali 850000001-860000001 4.85873999999999999985 4.86087142131307238784
Vali 860000001-870000001 4.86048000000000000008 4.85814135617564689384
Vali 870000001-880000001 4.85473000000000000018 4.85544550505486883054
Vali 880000001-890000001 4.85050999999999999995 4.85278305597843256534
Vali 890000001-900000001 4.84802999999999999995 4.85015322511782917330
Vali 900000001-910000001 4.85342000000000000021 4.84755525551228577978
Vali 910000001-920000001 4.85025999999999999973 4.84498841586388751456
Vali 920000001-930000001 4.83850000000000000011 4.84245199939918422776
Vali 930000001-940000001 4.83990999999999999990 4.83994532279294108895
Vali 940000001-950000001 4.84047000000000000007 4.83746772515001859398
Vali 950000001-960000001 4.83844999999999999998 4.83501856704166615682
Vali 960000001-970000001 4.83482000000000000000 4.83259722959278706974
Vali 970000001-980000001 4.82781999999999999985 4.83020311361698345253
Vali 980000001-990000001 4.83128999999999999984 4.82783563879642000629
Vali 990000001-1000000001 4.82824999999999999968 4.82549424290375685844
Noin näin minä ajattelen
Avatar
Keckuli
Reactions:
Viestit: 415
Liittynyt: 29 Marras 2022, 22:04
Paikkakunta: Helsinki
Viesti:

Re: Alkulukulauseen tutkimusta

Viesti Kirjoittaja Keckuli »

Yo. arvot ovat % arvoja...
Noin näin minä ajattelen
Vastaa Viestiin