Python ile asal sayıları listeleme

Question

Merhaba,

Project Euler 7. soru için bir çözüm arıyorum.

By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
What is the 10 001st prime number?

6. asalı gayet güzel bir şekilde veriyor fakat iş 10,001. sayıya gelince yanlış hesap çıkıyor. Nerede hata var ?

 

solved 0
Genel Ömer 3 months 8 Answers 316 views Kalfa 0

About ÖmerKalfa

Answers ( 8 )

  1. Ahmet ilgin
    0

    Hocam asal sayıları bulma algoritmanız yanlış bu algoritmaya göre tek sayıların kareleri asal çıkar.
    Kareköküne kadar ki sayılara bölmeyi deneyin

    def asal(kaca_kadar):
    “””Asal sayı bulan fonksiyon
    Girdi olarak bir sayı alır
    Bu sayıya kadar olan asal sayıları ekrana basar.
    “””
    asallar = [2]
    if kaca_kadar < 2:
    return None
    elif kaca_kadar == 2:
    return asallar
    else:
    for i in range(3,kaca_kadar,2):
    bolundu = False
    # karekökün aşağı yuvarlanma ihtimaline karşı, + 1 ekliyoruz.
    limit = (i ** 0.5) + 1
    for j in asallar:
    if i % j == 0:
    bolundu=True
    break
    if j > limit:
    break
    if bolundu == False:
    asallar.append(i)
    return asallar

  2. Lütfen yazdığınız kodu “” ifadesiyle ekleyin.

  3. Basit bir örnek vereyim;

    Bu durumda örnek çıktı şöyle olur ;

    Senin kodundaki hataya gelirsek;

    • 2,3,5,7 bölünmeyen sayılar diye almaya çalışmısın ama asıl doğru olan 1 veya kendisi dışındaki sayılara bölünmeyen olucak. Çünkü bu durmda 8,11,22,33… gibi sayıları işe dahil etmemişsin.
    • Döngün doğru çalışmıyor son sayıyı alıyor, listelemiyor.
    Best answer
  4. Yardımınız için teşekkürler.

    Set komutunu araştırdım biraz da anladığım kadarıyla belirli bir düzene sokuyor.
    Pop komutu da sondan saymaya başlıyor.  list[0] mantığının tersi.
    difference_update kodunu anlayamadım. Bu kodu çıkarttığımda sadece sayıyor. Açıklayabilir misiniz ?

    Asal mantığını kod üzerine dökemiyorum nedense.

  5. Bu işlemler aslında matematik’de gördüğümüz küme, kartezyen vb. konuların birebiridir.

    difference_update() : Kümedeki S(A/B) işlemine denktir.

    Örneğin;

    Buradaki “-” ifade, difference_update fonksiyonuna denk geliyor. Hatta hemen, kanıtlamak adına deniyelim 🙂

    Yine, asal sayıları listeler fakat karışık sıralayacağı için “sorted()” fonksiyonunu kullandım.

    SET fonksiyonu biraz kafanı kurcalayabilir , sana bir kaynak atıcam baştan sonra okuyup uyguladığında olayı çok basit şekilde kavrarsın.

    Kaynak : https://www.programiz.com/python-programming/set

     

  6. Verdiğiniz kaynağı inceledim biraz daha oturdu kafamda şuan, teşekkürler. Programlama da gerçekten çoğunlukla matematik üzerine, belki de tamamen 🙂

    Sıradaki soruya geçmeliyim artık sanırım.
    Bu arada; Merak eden arkadaşlar, linke direkt tıklayınca açılmıyor nedense, adresi kopyalayıp açabilirsiniz.

  7. Rica ederim, link’i düzelttim.

  8. Şöyle birşeyi 1 den 100 e kadar test ettim çalıştı.

     

Leave an answer

Captcha Click on image to update the captcha .