【问题标题】:Finding prime numbers using lists in Python 3.3.2在 Python 3.3.2 中使用列表查找素数
【发布时间】:2014-07-04 23:18:42
【问题描述】:

我正在尝试制作一个使用 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'

我明白为什么这个操作是不可能的(将一个列表中的一个整数元素除以另一个完整的列表是行不通的)并且想知道是否有任何方法可以实现我的目标。

感谢您的帮助。

【问题讨论】:

  • 你还来得及吗,我的回答有帮助吗?
  • 不完全。我在 python(或任何类型的编码语言)方面不是很有经验。不过感谢您的帮助。

标签: python list numbers compare primes


【解决方案1】:

您不能将整数和列表相除。你可以做的是使用列表理解。演示:

>>> 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

溶胶是 ((3/3)/2)/1

另外,您的while 循环永远不会结束。你确定要那个吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多