Şimdi Ara

Python MemoryError sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
461
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  •  # 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 >



  • 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 >
  • 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.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.