【问题标题】:Find all prime numbers from 10 to 10000查找从 10 到 10000 的所有素数
【发布时间】:2017-09-21 03:21:06
【问题描述】:
primes = [2,3,5,7]
for n in range(10, 10000):
    isPrime = True
    for d in primes:
        if (n % d) == 0:
            isPrime = False
        else:
            primes.append(n)
            break
print(primes[n])

我必须打印从 10 到 10000 的所有素数,然后将它们附加到给定的前几个素数数组中。我的代码在我多次测试时工作得更早。现在它给我一个错误“列表索引超出范围”。不知道有什么问题以为我走在正确的轨道上。

【问题讨论】:

  • 删除[n]。顺便说一句:测试高达 100 的因子就足够了。
  • 顺便说一句,我知道 10,000 不是素数,所以你实际上不需要这样做,但从技术上讲你应该这样做for n in range(10, 10001):
  • 我尝试只打印 (n) 或删除 [n]。没有工作,如果我删除 [n],它会打印从 2 到 10000 的所有数字,只是增加 2(ei.[2,3,5,7,9,11,13,15]
  • 您将少于 9990 个值附加到您的列表并尝试访问位置 10000

标签: python


【解决方案1】:

我认为你应该从这样的事情开始

在追加到列表之前,您需要遍历所有素数。否则,你总是会在奇数上打破这个循环(你用 2 修改)

primes = [2,3,5,7]
for n in range(10, 10000):
    isPrime = True
    for d in primes:
        if n % d == 0:
            isPrime = False
            break 
    if isPrime:
        primes.append(n)
print(primes)

【讨论】:

    猜你喜欢
    • 2015-01-03
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多