Eratosthenes的筛子Python

时间:2017-02-04 02:39:21

标签: python

我正在尝试在指定范围内找到素数。我们得到以下结论:

•初始化: - 创建一个长度为n + 1的布尔值列表(我们希望检查素数最多为n的值;我们不会对位置0和1做任何事情,但是这样更容易索引),这些都是最初是真的 - 将计数器初始化为2 - 初始化结果的空列表

•只要上面定义的计数器小于或等于n,就启动一个while循环 - 将计数器的当前值添加到结果列表中 - 对于当前计数器值的所有倍数< = n,将布尔列表的值设置为False;你可以用while或for循环来做这件事。例如,如果i = 3且n = 10,则应将列表的元素6和9设置为False - 向前搜索下一个可能的素数值: *首先将计数器递增1 *当计数器小于或等于n和布尔值的对应元素时 list为False,将计数器增加1。 •返回结果列表

def eratos(n):
    """function_docstring"""
    prime=[True]*(n+1)
    # 0 and 1 are not considered prime.
    count=2
    result=list()
    while count<=n:
        count+=result
        while count<=n:
            prime=False
            count+=1
            while count<=n:
                n=False
                count+=1
print(eratos(1)==[])=True *i keep on getting False* 

我似乎无法弄清楚我哪里出错了。

0 个答案:

没有答案