【发布时间】:2017-11-18 18:14:14
【问题描述】:
设置:python 3.6
我想创建列表并按数学规则过滤列表以找到素数。
第 1 部分:分配每个数字的平方根的函数
第 2 部分:创建列表并添加根为 %1 != 0 的数字。
第 3 部分:问题:计算每个值是否为质数。
如何完成第 3 部分: 取每个数字并将该数字除以所有作为前身的素数。只要不是 %1 == 0,数字就是质数。 而不是更进一步到列表中的下一个数字。
我真的很想这样做,以了解更多关于处理列表的方式。
结果只是最后的一个非常小的列表。
y = int(input("Please put the last number you want to now: \n"))
x = 1 # 0 is not valid by logic and 1 is not valid by definition
prims = []
# Part 1: Function: Calculate the square root (1)
def rootV(i):
return math.sqrt(i)
# Part 2: Set the range of numbers and create the first list
for j in range(x, y):
j = int(j + 1)
c = rootV(j)
if c %1 == 0:
continue
else:
prims.append(j) # Liste der Wert gegeben
print(prims)
# Part 3: Analyse every value by division with his predesessors
for i in prims:
if len(prims) == 1:
print("Very short list my friend: " + str(i))
elif len(prims) > 1:
for number in prims:
lastNumber = len(prims) - 1
firstNumber = 0
value = prims[lastNumber] / prims[firstNumber]
if value %1 == 0:
prims.remove(lastNumber)
continue
else:
continue
print(prims)
【问题讨论】:
-
你在第一个 if "if len(prims) == 1:" 之后错过了一个标签,打印应该是标签。
-
逻辑上也存在一些问题,在你已经进入 for 循环(在第 3 部分)之后,为什么还要检查列表的 len 是否等于 1。首先检查它,以节省运行时间。
标签: python python-3.x primes