2016-04-02 25 views
-5

Python'da bir egzersiz yapmaya çalışıyorum ama sürekli takılıyorum.Bir listeden sayıların katlarını kaldırın - Python

Alıştırma: 2 ile 10,000 arasındaki tüm sayıları bir listeye ekleyen bir program yazın. Daha sonra 2 (2 değil) katlarını, 3 (3 değil) katlarını kaldırın, vb. 100'ün katları. Kalan değerleri yazdırın.

def main(): 
    _list_ = [] 
    for i in range(2, 10001): 
     _list_.append(i) 

    multiples = 0 
    multiple = 2 
    while multiples <= 10000: 
     multiples += 2 
     _list_.remove(multiples) 
main() 

Bu 2 kişilik tek çözüm ama çıkarmadan, ... ve 3 gibi diğerleri için nasıl yapacağız 3, 4, 5, ...?

Yardımlarınız için teşekkürler!

+0

Merhaba ekleyebilir. [Nasıl iyi bir soru sormalıyım?] (Http://stackoverflow.com/help/how-to-ask) ve [Minimal, Tam ve Doğrulanabilir bir örnek nasıl oluşturulur] hakkında bilgi sahibi olmak isteyebilirsiniz. : //stackoverflow.com/help/mcve). –

+0

Listeyi bir kümeye ve geri dönüşüme dönüştürme hakkında bilgi edinin. http://www.learnpython.org/en/Sets –

+0

Bu gereksiz ara maddeyi her bir adım için listeler oluşturarak kesersek, bu oldukça kolay görünüyor: 'print ([eğer varsa aralıkta (2, 10001) numara] (aralıktaki değer için% değer veya değer == sayı (2, 101))]) ';-) – Matthias

cevap

0

aynı sonucu (asal sayılar < 10000) almak için çok daha basit yolları vardır ama bu kodu kullanmayı ısrar eğer basit bir döngü

def main(): 
    _list_ = [] 
    for i in range(2, 10001): 
     _list_.append(i) 

    k=0 
    while k<10000-2:# n starts from 2 
     n = _list_[k] 
     multiple = 2*n 
     while multiple <= 10000: 
      multiple += n 
      _list_.remove(multiple) 
     k = k + 1 
main() 
İlgili konular