# coding:utf-8 for n in range(1,100): bolen=1 a=2**n b=(2**a)+1 for i in range(2,b): if(b%i==0): bolen=bolen+1 if(bolen<2): print n
Fermat asallarıyla ilgili böyle bir program yazdım ama şöyle bir hata aldım:
xxxxxxx@xxxxx:~/Desktop$ python asal.py 1 2 3 4 Traceback (most recent call last): File "asal.py", line 6, in <module> for i in range(2,b): MemoryError
Bir çözüm bilen var mı?
< Bu mesaj bu kişi tarafından değiştirildi brk1995 -- 27 Temmuz 2015; 12:20:17 >
Kısmında b çok büyük bi sayı olduğundan bu eleman sayısına sahip diziyi hafızada açarken hata veriyor. Şöyle bi alternatif kullanabilirsin
i = 2 while i<b: if(b%i==0): bolen=bolen+1 i += 1
Bu hata almanı engeller ancak senin kurduğun algoritma çok verimsiz olduğu için program yavaş çalışacak. O kadar büyük sayılarda döngü dönmek mantıklı bi iş değil. Başka bi yolunu bulmaya çalış.
Kısmında b çok büyük bi sayı olduğundan bu eleman sayısına sahip diziyi hafızada açarken hata veriyor. Şöyle bi alternatif kullanabilirsin
i = 2 while i<b: if(b%i==0): bolen=bolen+1 i += 1
Bu hata almanı engeller ancak senin kurduğun algoritma çok verimsiz olduğu için program yavaş çalışacak. O kadar büyük sayılarda döngü dönmek mantıklı bi iş değil. Başka bi yolunu bulmaya çalış.
Cevap için teşekkürler.Verimsiz olduğunun farkındayım kuantum bilgisayar falan gerekli sonuç elde etmek için.
Fermat asallarıyla ilgili böyle bir program yazdım ama şöyle bir hata aldım:
xxxxxxx@xxxxx:~/Desktop$ python asal.py
1
2
3
4
Traceback (most recent call last):
File "asal.py", line 6, in <module>
for i in range(2,b):
MemoryError
Bir çözüm bilen var mı?
< Bu mesaj bu kişi tarafından değiştirildi brk1995 -- 27 Temmuz 2015; 12:20:17 >