Arama butonu
Bu konudaki kullanıcılar: 1 misafir
2
Cevap
463
Tıklama
0
Öne Çıkarma
Python MemoryError sorunu
B
9 yıl
Teğmen
Konu Sahibi

 # 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 >

M
9 yıl
Teğmen

Range fonksiyonu dizi oluşturur.

 
for i in range(2,b):
if(b%i==0):
bolen=bolen+1



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ış.





< Bu mesaj bu kişi tarafından değiştirildi MrAlgorithm -- 27 Temmuz 2015; 16:32:17 >
Bu mesaja 1 cevap geldi.
B
9 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: Alawar

Range fonksiyonu dizi oluşturur.

 
for i in range(2,b):
if(b%i==0):
bolen=bolen+1



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.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.