-1
我正在重新編寫一箇舊的python腳本。在通過一些隨機測試案例運行它時,我注意到它會在某些情況下陷入無限循環,而不是其他情況。該腳本適用於Project Euler Problem 3(適用於問題提示,因此從未注意到隨機無限循環)。這將適用於10,19,51,600851475143.它陷入了152的無限循環。我沒有嘗試其他的,但認爲這是足夠的測試用例來注意某些「奇怪」的東西。爲什麼此腳本在某些情況下陷入無限循環?
下面的代碼:
import sys
def largestPrime(n):
largest_prime = 0 # initialize largest prime
d = 2 # set first value for factor evaluation
while n > 1: # n will be divided by each factor later on
while n % d == 0: # check if n is divisible by factor
if d > largest_prime: # check if d is greater than largest_prime
largest_prime = d # if so, set largest_prime = d
n /= d # if so, can divide n by d to find remaining factors
d += 1
return largest_prime
def main():
# Make a list of command line arguments, omitting the [0] element
# which is the script itself.
args = sys.argv[1:]
if not args: #if list is empty; return message & exit
print ("Usage: euler003.py 'n'")
sys.exit(1)
if len(args) > 1: #if list less than 1; return message & exit
print ("You've entered too many arguments; Usage: euler001.py 'n'")
sys.exit(1)
largest = largestPrime(int(args[0]))
print (largest)
# This is the standard boilerplate that calls the main() function.
if __name__ == "__main__":
main()
謝謝!沒有捕捉到均勻分佈的無限循環(認爲10覆蓋了它,但沒有導致偶數)。 –