【发布时间】:2021-05-20 04:30:54
【问题描述】:
我对 python/编程很陌生,我一直在尝试筛选 Eratosthenes 函数程序,但似乎我的代码输出了不希望的结果。此外,对此我也不知道程序如何输出该特定解决方案。请有人帮助我并解释当前的输出以及我应该如何着手和修复这个程序,以便它可以打印素数。
亲切的问候!
#Sieve Code
import math
numbers = []
def sieve_method(n):
global numbers
for n in range(2, n + 1):
for J in range (2, int(math.sqrt(n))+1):
if J in numbers:
multiple = n*J
while multiple <= n:
if multiple in numbers:
numbers.remove(n)
J += multiple
numbers.append(n)
print(numbers)
sieve_method(10)
#CURRENT OUTPUT
#[]
#[]
#[4]
#[4, 5]
#[4, 5, 6]
#[4, 5, 6, 7]
#[4, 5, 6, 7, 8]
#[4, 5, 6, 7, 8, 9, 9]
#[4, 5, 6, 7, 8, 9, 9, 10, 10]
【问题讨论】:
-
那根本不是eratosthenes的筛子
-
如果你使用更有意义的变量名会很有帮助。
-
codereview.stackexchange.com/a/194762/226167 。您可以在
codereview上发现不同的人多次尝试筛算法。 -
请通过intro tour、help center 和how to ask a good question 了解本网站的工作原理并帮助您改进当前和未来的问题,从而帮助您获得更好的答案。由于无意义的变量名称和缺乏 cmets 或结构,我看不出你是如何认为你正在构建筛子。
标签: python sieve-of-eratosthenes