def simple (n): div=0 for i in xrange (2, n+1): for j in xrange (2, i): if i % j == 0: div += 1 if div == 0: return True else: return False n=input() l = [ i for i in xrange(n) if simple(i) ] print l
def simple (n): div=0 for i in xrange (2, n+1): for j in xrange (2, i): if i % j == 0: div += 1 if div == 0: return True else: return False n=input() l = [ i for i in xrange(n) if simple(i) ] print l
def endless_prime_generator(): used_primes = [] current_n = 2 while True: is_prime = True for p in used_primes: if current_n % p == 0: is_prime = False break if is_prime: used_primes.append(current_n) yield current_n current_n += 1 primes = endless_prime_generator() print "Iterating endless prime generator" for i in range(10): print primes.next(),
r2d2
Подскажите почему не работает вывод списка простых чисел в заданном диапазоне? Выдаётся тупо список всех чисел из диапазона.
неправильная вложенность
def simple (n): div=0 for j in xrange (2, n): if n % j == 0: div += 1 if div == 0: return True else: return False n=input() l = [ x for x in xrange(1, n+1) if simple(x) ] print l
http://habrahabr.ru/post/122538/
def simple(): lst=[] i = 2 while True: for p in lst: for i in xrange(2, p): if i % p == 0: break else: lst.append(i) yield i i += 1 gen=simple() for j in range(7): print gen.next(),
import math def primes(N): """Возвращает все простые от 2 до N""" sieve = set(range(2, N)) for i in range(2, int(math.sqrt(N))): if i in sieve: sieve -= set(range(2*i, N, i)) return sieve print (primes(158))
def good_prime(C): D=int(C/2) B=int(C/6) A=set(range(D)) for i in range(1,B+1): for j in range(i,int((D+i)/(1+2*i)+1)): A.discard(i+j+2*i*j) A=[ 2*x+1 for x in A ] return A print(good_prime(158))