在Python 3.3.2中使用列表查找素数
我试图在Python 3.3.2中制作一个程序,使用列表查找素数。我要做的是从ns中取一个元素,然后除以b中的所有元素 这就是我得到的不起作用:在Python 3.3.2中使用列表查找素数,python,list,numbers,compare,primes,Python,List,Numbers,Compare,Primes,我试图在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 pr
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项检查用于确保不被零除
编辑:实际上,你的意思可能有所不同,那就是将ns中的一个元素依次除以b中的每个元素。ns[-1]的演示:
溶胶为3/3/2/1
而且,您的while循环永远不会结束。你确定你想要吗?你还想继续吗,我的回答有用吗?不太好。我对python或任何编码语言都不是很有经验。谢谢你的帮助。
>>> ns = [1,2,3]
>>> b = [1,2,3]
>>> sol = ns[-1]
>>> for item in b:
... sol = float(sol)/item
...
>>> sol
0.5