【发布时间】:2014-05-28 14:41:45
【问题描述】:
我正在尝试创建一个输出第 n 个素数的算法。我已经编写了代码,但是每当我运行它时,我都会得到第 980 个素数,它什么时候应该输出第 1000 个素数?
testNumber = 1
countPrimes = 0
testCounter = 2
isPrime = False
currentPrime = 0
while(countPrimes <= 1021): #runs for the first 1k primes
testCounter=2
isPrime = True
if(testNumber%2 != 0): #checks if test number is odd
while(testCounter*testCounter < testNumber): #counter^2 needs to be less than testNumber
if(testNumber%testCounter == 0):
isPrime = False
testCounter = testCounter + 1
if(isPrime==True):
countPrimes = countPrimes + 1
currentPrime = testNumber
testNumber+=1
print currentPrime
【问题讨论】:
-
逻辑完全崩溃了。你对
testNumber做了什么吗?在编码之前将逻辑写在纸上。 -
@devnull 感谢您指出我没有对 testNumber 做任何事情,我只需要增加它,所以我不认为逻辑被破坏了。但由于某种原因,它现在给了我在我正在寻找的那个之前的首要条件?
-
当我运行你的代码时,它会打印出 7919,这是第 1000 个素数。这里有什么问题?
-
@Brionius 对不起,我应该指出。为了得到这个结果,while 循环需要有 countPrimes
-
我明白了。请参阅下面的答案。