【问题标题】:I try to implement the sieve of Eratosthenes我尝试实施 Eratosthenes 的筛子
【发布时间】:2019-04-29 13:04:45
【问题描述】:

我尝试实现 Eratosthenes 的筛子来检查 Python 中的数字是否是素数。如果我运行程序,它会显示:“进程以退出代码 0 完成”。怎么回事?

def primzahl(n):

    primzahlen = []
    numbers = list(range(2,n))
    c = 2
    while c*c < n:
        for k in range(c,n,c):
            if k in numbers:
                numbers.remove(k)
        primzahlen.append(c)
        c = numbers[0]

    return primzahlen + numbers
    print(primzahl(100))

【问题讨论】:

  • 我编辑了你的代码...是print 现在的声明(不应该!)...
  • 嗨@hiroprotagonist,您的编辑将被视为尝试回复,很可能会被IMO拒绝!
  • @DeveshKumarSingh 我想你误会了:我没有尝试修复代码;只是标记了所有内容(包括最后一个 print 语句)并将其向右移动 4 个空格,使其显示为代码。
  • 啊,当你说`是现在的打印语句(不应该!)`时,我以为你修改了打印语句以取消缩进!我的错!

标签: python primes


【解决方案1】:

只需取消缩进您的 print 语句即可将其从函数中取出。

def primzahl(n):

    primzahlen = []
    numbers = list(range(2,n))
    c = 2
    while c*c < n:
        for k in range(c,n,c):
            if k in numbers:
                numbers.remove(k)
        primzahlen.append(c)
        c = numbers[0]

    return primzahlen + numbers

#Unindent this statement
print(primzahl(100))

然后是输出

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

【讨论】:

  • 太棒了!乐意效劳!如果您可以将答案标记为已接受@bijankhr,那就太好了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多