繁体   English   中英

使用Python 3.3.2中的列表查找素数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM