emrahozmen
MB Üyesi
- Kayıt
- 20 Mart 2015
- Mesajlar
- 22
- Tepkiler
- 8
- Yaş
- 43
- Üniv
- erciyes
olmaz. koddaki değişken kapasitesi bu sayıyı saklayamaz. çünkü 33 milyon /8 kadar byte tipinde veri tutmalı. bu da 4 milyon küsür byte eder. biginteger değişkeni 50 byte saklıyor. geriye kalan 33 milyon küsür byte nerede saklanacak?
kod mu yarıştıracaz peşinen söyleyim ben çekilirim. senin kodların kazansın.
ben karşılaştığım sorunu söyledim. algoritmada sorun yok. gayet hızlı çalışıyor. sorun şurda bulunan sonuçları saklayacak yer yok. yazılarımda da iki kere belirttim.
kodlar zaten nesneye yönelik, bu şekilde olmazsa ipin ucu kaçar. multi thread olursa fazla sayıda thread açılamıyor. oda tek pc de bir işe yaramıyor fakat paralel işlemcili yapıda çalışır ve sonucu elbetteki kısaltır. yapı buna uygun yapıda.
kod gönderirim saklayacak bir şey yok.
sadece üs alma kısmını gösteren kod
buradan ekranda şu sonuç çıkıyor.
6 sn de;
2 ^ 655360 sayısını bulmuş. bu sayı elbette asal değil. sadece hızını ve işlem kapasitesini gösterebilmek için çabucak yaptığım bir işlem.
sonucun basamak sayısı 197284 haneymiş.
isteyene word halinde 104227..... ile başlayan tam sayıyı gönderebilirim.
ya hala (1 milyar için) 9 hane için hızdan bahsediyorsun bırak bu küçük haneleri küçük hanelerde hız önemli değil. zaten asalların nette senin uğraştığın sayı aralıklarındaki tablolar var. çek onları makinene, kaydet dosyana, veritabanından göster. al sana 1 sn altında hız. büyükleri bulmak içinde bende yapı var. istiyosan kullan ama saklayacak yerin yokken ne işine yarayacak?
benim sıkıntım dolayısıyla asallardaki şu anki sıkıntı saklanamaması. bulmada sıkıntı yok. senin yapı üzerine baya bi çalıştıktan sonra tüm sayıları bulabilecek yapıya gelir. o aşamaya geldikten sonrada saklayacak yer bulamayacaksın.
ha şunu diyebilirsin ben tüm asalları bilmeden olasılık vererek bir sayının asal olup olmadığını söylerim diyebilirsin. bende derimki ispatla. işte o zaman benim gibi tüm asalları bulmak zorunda kalırsın. mesele tamda bu...
kod mu yarıştıracaz peşinen söyleyim ben çekilirim. senin kodların kazansın.
ben karşılaştığım sorunu söyledim. algoritmada sorun yok. gayet hızlı çalışıyor. sorun şurda bulunan sonuçları saklayacak yer yok. yazılarımda da iki kere belirttim.
kodlar zaten nesneye yönelik, bu şekilde olmazsa ipin ucu kaçar. multi thread olursa fazla sayıda thread açılamıyor. oda tek pc de bir işe yaramıyor fakat paralel işlemcili yapıda çalışır ve sonucu elbetteki kısaltır. yapı buna uygun yapıda.
kod gönderirim saklayacak bir şey yok.
sadece üs alma kısmını gösteren kod
Kod:
procedure TForm1.ButtonSagKisimClick(Sender: TObject);
var i,t,d:integer;
toplam,aratoplam:int64;
begin
aratoplam:=0;
for i:=1 to n do
begin
Application.ProcessMessages;
toplam:=0;
d:=i;
t:=1;
if i mod 1000 =0 then
StatusBar1.SimpleText:='Sağ kısım, n = '+inttostr(n)+' ilerleme = '+inttostr(i);
repeat
toplam:=toplam+s[d]*s[t];
d:=d-1;
t:=t+1;
until d=0 ;
c[i]:=toplam+aratoplam;
aratoplam:=strtoint64(copy(inttostr(c[i]),1,length(inttostr(c[i]))-4));
c[i]:=strtoint64(copy(inttostr(c[i]),length(inttostr(c[i]))-3,4));
end;
atop:=aratoplam;
end;
//----***-------------------Emrah------------------------***----
procedure TForm1.ButtonSolKisimClick(Sender: TObject);
var i,d,t:integer;
aratoplam2,toplam2:int64;
begin
r:=n;
aratoplam2:=atop;
for i:=2 to n do
begin
Application.ProcessMessages;
toplam2:=0;
d:=i;
t:=n;
if i mod 1000 =0 then
StatusBar1.SimpleText:='Sol kısım, n = '+inttostr(n)+' ilerleme = '+inttostr(i);
repeat
toplam2:=toplam2+s[d]*s[t];
d:=d+1;
t:=t-1;
until d=n+1 ;
r:=r+1;
c[r]:=toplam2+aratoplam2;
if (length(inttostr(c[r]))-4)<=0 then
aratoplam2:=0 else
aratoplam2:=strtoint64(copy(inttostr(c[r]),1,length(inttostr(c[r]))-4));
c[r]:=strtoint64(copy(inttostr(c[r]),length(inttostr(c[r]))-3,4));
end;
r:=r+1;
c[r]:=aratoplam2;
end;
6 sn de;
2 ^ 655360 sayısını bulmuş. bu sayı elbette asal değil. sadece hızını ve işlem kapasitesini gösterebilmek için çabucak yaptığım bir işlem.
sonucun basamak sayısı 197284 haneymiş.
isteyene word halinde 104227..... ile başlayan tam sayıyı gönderebilirim.
ya hala (1 milyar için) 9 hane için hızdan bahsediyorsun bırak bu küçük haneleri küçük hanelerde hız önemli değil. zaten asalların nette senin uğraştığın sayı aralıklarındaki tablolar var. çek onları makinene, kaydet dosyana, veritabanından göster. al sana 1 sn altında hız. büyükleri bulmak içinde bende yapı var. istiyosan kullan ama saklayacak yerin yokken ne işine yarayacak?
benim sıkıntım dolayısıyla asallardaki şu anki sıkıntı saklanamaması. bulmada sıkıntı yok. senin yapı üzerine baya bi çalıştıktan sonra tüm sayıları bulabilecek yapıya gelir. o aşamaya geldikten sonrada saklayacak yer bulamayacaksın.
ha şunu diyebilirsin ben tüm asalları bilmeden olasılık vererek bir sayının asal olup olmadığını söylerim diyebilirsin. bende derimki ispatla. işte o zaman benim gibi tüm asalları bulmak zorunda kalırsın. mesele tamda bu...