[英]Finding prime numbers using lists in Python 3.3.2
我正在尝试制作一个使用Python 3.3.2中的列表查找素数的程序。 我想做的是从ns
取一个元素,然后除以b
所有元素。
这是我得到的(不起作用):
b = [1]
ns = [1]
while 1 == 1:
if ns[-1] / b[:] == 1 or ns[-1]:
print (ns[-1])
ns.append(ns[-1]+1)
b.append(b[-1]+1)
else:
print ("No prime found.")
这是我收到的错误:
if ns[-1] / b[:] == 1 or ns[-1]:
TypeError: unsupported operand type(s) for /: 'int' and 'list'
我知道为什么无法执行此操作(将一个列表中的整数元素除以另一个整个列表是行不通的),并且想知道是否有任何方法可以实现我的目标。
谢谢你的帮助。
您不能将整数和列表相除。 您可以做的是使用列表理解。 演示:
>>> ns = [1,2,3]
>>> b= [7,9,12,13]
>>> # divide last element of ns by all elements of b
...
>>> [float(ns[-1])/item for item in b if item]
[0.42857142857142855, 0.3333333333333333, 0.25, 0.23076923076923078]
新列表的第一个元素是3/7,第二个元素是3/9,依此类推。 if item
检查用于确保您不被零除。
编辑:您实际上可能表示不同的意思,就是将ns
的一个元素依次除以b
中的每个元素。 ns[-1]
演示:
>>> ns = [1,2,3]
>>> b = [1,2,3]
>>> sol = ns[-1]
>>> for item in b:
... sol = float(sol)/item
...
>>> sol
0.5
sol是((3/3)/ 2)/ 1
此外,您的while
循环永远不会结束。 您确定要吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.