【发布时间】:2014-10-25 11:00:49
【问题描述】:
声明说:
编写一个函数
era1(),要求用户输入一个数字n,然后 使用此算法打印所有小于或等于的素数n.算法:
- 用从 2 到要计算的最大整数 N 的数字编写一个列表。
- 列表中的第一个数字是质数。将此数字写成素数列表,
B。- 从列表
A中删除第一个元素及其倍数。- 如果列表
A中的第一个数字小于平方根N,则返回第二个点。B列表中的数字和列表A中剩余的数字都是搜索的素数。
现在,我输入这段代码:
import math
def primo(num):
if num < 2:
return False
i = 2
for i in range(2, int(math.sqrt(num) + 1)):
if (num % i == 0):
return False
return True
def main():
n = input("Introdueix un nombre: ")
B = range(2, n)
for i in B:
if primo(i):
print i
main()
def era1():
n = input("Introdueix un nombre: ")
A = range(2, n + 1)
B = [A[0]]
for i in A:
if i % 2 == 0:
A.remove(i)
if A[0] < math.sqrt(n):
print B + A
era1()
结果不正确,因为如果我删除其中一个输入,则会出现错误,我只需输入一次。结果也不正确,因为A + B,列表B不是函数main的列表,最终结果只是数字而不是2和2的倍数。我怎样才能只输入一个输入,然后是最终结果会正确吗?
【问题讨论】:
标签: python