python - Eratosthenes 筛法当数字为素数时打印“1”而不打印“0”
python - sieve of Eratosthenes when number is prime print "1" when not print "0"
我必须创建一个函数 f(n)
,当数字为素数时,其值为 1
,而当数字不是素数时,其值为 0
。
代码正在运行,但打印顺序相反。
例如:f(6)= 0 0 1 1 0 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)
像这样反转循环:
def f(n):
print('0')
for a in range(1, n+1):
print('1' if prime(a) else '0')
PS 我在 Stack Overflow 的 python 中看到了如何 实际上 实现埃拉托色尼筛法的好例子,值得寻找更好的解决方案.
我必须创建一个函数 f(n)
,当数字为素数时,其值为 1
,而当数字不是素数时,其值为 0
。
代码正在运行,但打印顺序相反。
例如:f(6)= 0 0 1 1 0 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)
像这样反转循环:
def f(n):
print('0')
for a in range(1, n+1):
print('1' if prime(a) else '0')
PS 我在 Stack Overflow 的 python 中看到了如何 实际上 实现埃拉托色尼筛法的好例子,值得寻找更好的解决方案.