2015-04-22 49 views
-2

我必须创建一个函数f(n),其值为1当数字为素数或数值为0时不是素数。 代码正在工作,但按相反顺序打印。 例如:f(6)= 0 0 1 1 0 1 0蟒蛇 - 当Eratosthenes数字为素数时打印“1”时不打印“0”

def prime(n): 
    if n<2: return False 
    for i in range(2,n): 
     if n%i == 0: 
      return False 
    return True 

def f(n): 
    print('0', end=' ') 
    a=1 
    while a<=n: 
     n=n-1 
     print('1' if prime(n) else '0', end=' ') 

f(6) 
+6

这不是_ [筛](http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes)。这只是一个循环倒计数和天真地测试它们是否是素数。但是如果你想扭转输出的顺序,只需要反转循环。 –

+0

我不知道如何:当n> = a? – Martin

+0

查看[这篇文章](http://stackoverflow.com/a/3941967/764322)的筛选示例。你有什么只是一个非常低效的主要检查。 –

回答

1

反向像循环:如何实际上

def f(n): 
    print('0') 
    for a in range(1, n+1): 
    print('1' if prime(a) else '0') 

PS我已经看到很好的例子实施埃拉托色尼的蟒蛇在Stack Overflow筛子,值得搜索更好的解决方案。