Python - prvočísla: Porovnání verzí

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
m
Řádek 17: Řádek 17:
 
           n = i*k
 
           n = i*k
 
   
 
   
  for i in range(2, N):
+
  for i in range(1, N):
 
     if integers[i]:
 
     if integers[i]:
 
       print i,
 
       print i,
 
   
 
   
 
  print
 
  print

Verze z 3. 12. 2005, 12:15

Eratosthenovo síto.

Vytvoříme seznam přirozených čísel menších než N. První prvočíslo je 2, označíme tedy v našem sezmanu všechny násobky čísla 2 (která z definice nemohou být prvočísly). Přejdeme na další neoznačené číslo v seznamu, tj. na číslo 3 a celý proces opakujeme, dokud není zpracován celý seznam.

#!/usr/bin/python

N = 100
integers = [1]*N

for i in range(2, N):
   if integers[i]:
      k = 2
      n = i*k
      while n < N:
         integers[n] = 0
         k = k + 1
         n = i*k

for i in range(1, N):
   if integers[i]:
      print i,

print