【问题标题】:Python: Looping through part of a list to find prime numbersPython:循环遍历列表的一部分以查找素数
【发布时间】:2014-09-23 15:18:08
【问题描述】:

首先,我打算构建一个包含素数 2 的列表。 然后我应该遍历数字 3 到大约 10000,检查每个数字是否可以被列表中的每个元素整除,对于所有等于或小于 n 的平方根的元素。 如果没有,则将该号码添加到列表中。 到目前为止,我有:

from math import sqrt

primes = [2]

for n in xrange(3,10000):
    if all(n % p for p in primes):
       primes.append(n)
    else:
        continue

print primes

我不确定如何在达到元素

有人可以帮忙吗?谢谢。

【问题讨论】:

    标签: python


    【解决方案1】:

    使用itertools中的takewhile

    >>> from itertools import takewhile
    >>> n, primes = 11, [2, 3, 5, 7, 11, 13, 17]
    >>> all(n % p for p in takewhile(lambda p: p * p < n + 1, primes))
    True
    

    【讨论】:

      【解决方案2】:

      要退出循环,您可以使用break 关键字,例如:

      list = [1,2,3,4,5,6,7,8,9,10]
      
      for value in list:
        if value == 5:
          break
        print(value)
      

      会给你:

      1
      2
      3
      4
      

      我希望这能回答你的问题。

      【讨论】:

        【解决方案3】:
        from math import sqrt 
        from math import ceil #takes the ceiling of a number there is also floor instead
        
        primes = [2]
        
        for n in xrange(3,int(ceil(sqrt(10000)))): #take the int of the ceiling of square root 
            if all(n % p for p in primes): 
                primes.append(n) 
            else: 
                continue
        
        print primes
        

        这就是你要找的吗?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-26
          • 2019-04-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多