我在秋天开始了一个计算机科学课程,我正在尝试在开始之前建立我的编程能力。
我正在研究 MIT OCW 6.0 问题,第一个是产生第 1000 个素数。显然,我想生成自己的代码,所以我想知道我的逻辑哪里出了问题。
counter = 1
primes = [2]
n = 3
while counter < 1000:
for i in range(2, n):
if n % i == 0:
break
else:
primes.append(n)
counter = counter + 1
n = n + 1
print primes
你们太棒了,所以我不会在这里解释每一行,但我的逻辑要点是我希望这个循环从 n 开始。如果 n 是素数,则将其添加到列表中并在计数器中添加 1,如果不是则移动到下一个数字。最后,打印列表,以第 1000 个素数结尾。
看,我知道这是“蛮力”,我知道那里有筛子和更复杂的逻辑,但我希望它以这种方式工作。现在,我得到了很多重复的数字,而且没有接近第 1000 个素数。
多谢你们。这是我的第一个问题,但我相信还会有更多问题。