Mitä erikoista on luvussa 999999?

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

Mitä erikoista on luvussa 999999?

Viesti Kirjoittaja Keckuli »

Se on piin tuhannen ensimmäisen desimaalin joukossa pisin lukujono, mikä sisältää samoja numeroita. Ne ovat desimaalit väliltä 764-769.

Olen tutkimuksissani ja kokeiluissani päätynyt siihen, että jos halutaan n kpl piin desimaaleja oikein, niin laskut on suoritettava tarkkuudella 2*n ja John Machin sarjasta on otettava 2*n termiä. Ainakin tämä päti tuhanteen saakka. Pienemmilläkin arvoilla pärjännee, mutta laskin nyt näillä. En osaa sanoa päteekö sääntö suurempiinkin arvoihin.

Alla ohjelma, jolla laskin tuhat piin desimaalia ja suoritin tutkimuksen. Ajo kesti 64.667 sekuntia.

Koodi: Valitse kaikki

program TuhatPii;
uses bigdecimalmath, sysutils,DateUtils;
const tarkkuus = 1000;
	tarkkuuskerroin = 2;
type strindeksi = 1..tarkkuus;
var pii, piiapuri1, piiapuri2,viisi,numero239,nelja,yksi,ind,kaksi,jakaja: BigDecimal;
	str: array [1..tarkkuus] of char;
	merkki,lkm,i	: strindeksi;
	aika1,aika2:Double;
	kokeile	: char;
	pisin	:	word;
function potenssi(a,n: BigDecimal):BigDecimal; // laskee a potenssii n:n
var tulos,i: BigDecimal;
begin
	tulos:=1;
	i:=1;
	while i<=n do begin
		tulos:=tulos*a;
		i:=i+1;
	end;
	potenssi:=tulos;
end;	
begin 
	aika1:=Now;
	pii:= 0;
	ind:= 1;
	piiapuri1:=0;
	piiapuri2:=0;
	viisi:=5;
	numero239:=239;
	nelja:=4;
	yksi:=1;
	kaksi:=2;
	while ind <= (tarkkuus*2) do 
	begin
		jakaja:=ind*(potenssi(viisi,ind));
		piiapuri1:= piiapuri1+(divide(nelja, jakaja,tarkkuuskerroin*tarkkuus));
		jakaja:=(ind*(potenssi(numero239,ind)));
		piiapuri2:= piiapuri2-(divide(yksi, jakaja,tarkkuuskerroin*tarkkuus));
		ind:=ind+kaksi;
		jakaja:=(ind*(potenssi(viisi,ind)));
		piiapuri1:=piiapuri1-(divide(nelja, jakaja,tarkkuuskerroin*tarkkuus));
		jakaja:=(ind*(potenssi(numero239,ind)));
		piiapuri2:=piiapuri2+(divide(yksi, jakaja,tarkkuuskerroin*tarkkuus));
		pii:=nelja*(piiapuri1+piiapuri2);
		ind:=ind+kaksi;
	end;
	aika2:=Now;
	Writeln((aika2-aika1)*86400,' sekuntia.');
	str:=BigDecimalToStr(pii);
	writeln(str);
	pisin:=1;
	merkki:=1;
	while merkki<tarkkuus do
		begin
			lkm:=0;
			kokeile:=str[merkki];
			while (kokeile=str[merkki]) and (merkki <= tarkkuus) do 
				begin
					lkm:=lkm+1;
					merkki:=merkki+1;
				end;
				if lkm>=pisin then
					begin
						pisin:=lkm;
						writeln(merkki-lkm,'-',merkki-1);
						for i:=(merkki-lkm) to (merkki-1) do write(str[i]);
						writeln();
					end;
		end;
end.
Suosittelen BigDecimal kirjaston asentamista niille, jotka haluavat leikkiä Pascalilla ja isoilla numeroilla :P Yleensä ainakin minulle kaikenmaailman kirjastojen asentaminen tuottaa ongelmia, mutta nyt riittää kunhan tiedosto bigdecimalmath.pas sijaistee samassa hakemistossa kuin sinun ohjelmasi. Kirjaston saa tuolta: https://www.benibela.de/sources_en.html#bigdecimalmath ja freepascalin tuolta: https://www.freepascal.org/ Sen kun on asentanut, niin komentoriviltä ohjelmat kääntyvät käskyllä fpc ohjelma.pas

Yritin laskea ensin kymmenentuhatta desimaalia, mutta kärsivällisyys loppui kesken. Tein kuvaajan:
Ohjelman aikavaatimuksen kuvaaja väliltä 1-500 desimaalia
Ohjelman aikavaatimuksen kuvaaja väliltä 1-500 desimaalia
kuvaaja.png (2.59 KiB) Katsottu 394 kertaa
piin desimaalien laskemisen aikavaatimuksille 1:stä viiteensataan tarkkuudella tuolla minun ohjelmallani ja se nousee kyllä jyrkästi, mutta silti en ymmärä miksei edes tuntikausien ajo riittänyt kymmenelletuhannelle desimaalille, kun tuhat laskettiin minuutissa. Ymmärtääkö joku toinen? Täytyy ehkä yrittää vielä laittaa pariksi vuorokaudeksi ohjelma pyörimään. Netistä löytyisi kyllä vaikka miljoona piin desimaalia: https://www.piday.org/million/ , mutta haluaisin laskea ne itse.
Noin näin minä ajattelen
Avatar
Keckuli
Reactions:
Viestit: 415
Liittynyt: 29 Marras 2022, 22:04
Paikkakunta: Helsinki
Viesti:

Re: Mitä erikoista on luvussa 999999?

Viesti Kirjoittaja Keckuli »

Kas kummaa! Miljoonan joukosta ei pidempiä jonoja löydykään. Toki kuuden pituisia löytyy useita:

desim. luku lukumäärä
771-776 9 6
17542-17547 0 6
19454-19459 9 6
24474-24479 5 6
28475-28480 3 6
32796-32801 1 6
65268-65273 2 6
89093-89098 3 6
102395-102400 6 6

Mulla on tiedostossa pii.txt miljoona desimaalia ja tää ohjelma tutkii niitä:

Koodi: Valitse kaikki

program Tutkipiita;
uses Sysutils;
var file1 : File of Char;
	merkki: char;
	kokeile	: char;
	pisin	:	word;
	merkkiind,lkm,i,indeksi	: LongInt;
begin
  Assign (file1,'pii.txt');
  Reset (file1);
  pisin:=1;
  indeksi:=1;
  While not Eof(file1) do
  	begin
		read(file1,merkki);
		indeksi:=indeksi+1;
		kokeile:=merkki;
		lkm:=1;
		while (kokeile=merkki) and (not Eof(file1)) do 
			begin
				lkm:=lkm+1;
				read(file1,merkki);
				indeksi:=indeksi+1;
			end;
		if lkm>=pisin then
			begin
				pisin:=lkm;
				writeln(indeksi,'-',indeksi+lkm-1,' ',kokeile,'   ',lkm);
			end;		
	end;
end.
Noin näin minä ajattelen
Avatar
Keckuli
Reactions:
Viestit: 415
Liittynyt: 29 Marras 2022, 22:04
Paikkakunta: Helsinki
Viesti:

Re: Mitä erikoista on luvussa 999999?

Viesti Kirjoittaja Keckuli »

Tuli ladattua miljardi piin desiaalia: https://pi2e.ch/blog/2017/03/10/pi-digi ... /#download
Sieltä saisi ladattua vaikka triljoona - ja vaikka kaikki, maailmanennätyksen: 22.4 trillion digits of pi !, mutta en tiedä alanko kiusaamaan koneen kovalevyä. Tutkin nyt miljardia desimaalia. Olen menossa vasta noin desimaalissa 129 miljoonaa 423 tuhatta 91

desimaalit luku lukumäärä
36488187-36488195 3 9
45681793-45681801 6 9
46663532-46663540 8 9
129423083-129423091 6 9

Saa nähdä löytyykö miljardin joukosta mitään numeroa 10 peräkkäin.
Noin näin minä ajattelen
Avatar
Keckuli
Reactions:
Viestit: 415
Liittynyt: 29 Marras 2022, 22:04
Paikkakunta: Helsinki
Viesti:

Re: Mitä erikoista on luvussa 999999?

Viesti Kirjoittaja Keckuli »

Keckuli kirjoitti: 13 Joulu 2022, 03:05 Saa nähdä löytyykö miljardin joukosta mitään numeroa 10 peräkkäin.
Löytyi!: kutosia 10 kpl peräkkäin. Nyt jännätään löytyykö mitään numeroa 11 kpl :)
386980425-386980434 6 10
Noin näin minä ajattelen
Poistettu
Reactions:

Re: Mitä erikoista on luvussa 999999?

Viesti Kirjoittaja Poistettu »

Mä mitään noista luvuista tiedä, mutta vastaan että se on iperaattorista seuraava.
Yks lisää niin se olis imperaattori ja miljoonan miehen armeija.
Noi 9999, 99999, 999999 luvut on aasiassa merkityksellisiä.
Moni muukin luku on mielenkiintoinen ja maaginen.
Avatar
Keckuli
Reactions:
Viestit: 415
Liittynyt: 29 Marras 2022, 22:04
Paikkakunta: Helsinki
Viesti:

Re: Mitä erikoista on luvussa 999999?

Viesti Kirjoittaja Keckuli »

Keckuli kirjoitti: 13 Joulu 2022, 03:35 386980425-386980434 6 10
Ohjelmassani oli bugi. 386980425-386980433 on kutosia eli niitä on 9 kpl. Seuraavaksi tutkin triljoonaa! :P
Noin näin minä ajattelen
Avatar
Keckuli
Reactions:
Viestit: 415
Liittynyt: 29 Marras 2022, 22:04
Paikkakunta: Helsinki
Viesti:

Re: Mitä erikoista on luvussa 999999?

Viesti Kirjoittaja Keckuli »

Uusia tutkimuksia:
Tämä ohjelmani:

Koodi: Valitse kaikki

program Pi012345;
uses Sysutils;
var file1 : File of Char;
	digit: char;
	longest,trythis	:	word;
	amount,i,indexi	: LongInt;
	table	:	array[0..9] of String;
begin
  Assign (file1,'PI.txt');
  Reset (file1);
  longest:=1;
  indexi:=1;
  for i:=0 to 9 do table[i]:=IntToStr(i);
  While not Eof(file1) do
  	begin
		read(file1,digit);
		indexi:=indexi+1;
		trythis:=0;
		amount:=0;
		while (table[trythis]=digit) and (not Eof(file1)) do 
			begin
				amount:=amount+1;
				read(file1,digit);
				indexi:=indexi+1;
				trythis:=trythis+1;
				if trythis=10 then trythis:=0;
			end;
		if amount>=longest then
			begin
				longest:=amount;
				writeln(indexi,'-',indexi+amount-1,' ',table[trythis],'   ',amount);
			end;		
	end;
end.
tulosti:
.
.
.
705580234-705580241 8 8
789507421-789507428 8 8
807215149-807215156 8 8
899702710-899702717 8 8
956753757-956753765 9 9

Eli piin desimaalit väliltä 956753757-956753765 ovat 012345678.


100 miljardia piin desimaalia ovat latauksessa:
tulossa.jpg
Tavoitteena ladata ainakin triljoona - ja kun mulla on 3Tb:n kovalevy, niin miksei jopa piin maailmanennätys 22.4 triljoonaa! Voinee kestää kuukausia :D Mut sit riittäis tutkittavaa nörtillä.
Noin näin minä ajattelen
JeeSe
Reactions:
Viestit: 676
Liittynyt: 20 Joulu 2022, 13:37

Re: Mitä erikoista on luvussa 999999?

Viesti Kirjoittaja JeeSe »

Onko nelosia vähemmän peräkkäin kuin muita numeroita?
Onkohan se epäonnen numero muuallakin kuin peruskoulun todistuksessa?
Vastaa Viestiin