【发布时间】:2013-03-19 08:01:29
【问题描述】:
所以我正在尝试制作一个素数查找器,为了节省计算时间,我希望它在找到一个不是 1 或数字本身的除数时中止 forloop。现在该函数可以工作了,但它完全忽略了我的 if 语句。我做错了什么?
def prime(number):
oldnum = number
factor = 1
while number > 1:
factor += 1
while number % factor == 0:
if 1< factor < oldnum:
return 0 # is not prime
print("yay")
break
number //= factor
return 1 #prime!
【问题讨论】:
-
它只打破了第二个while循环?
-
@HagbartCeline:它会,如果它曾经达到:)
-
是什么让你相信它忽略了你的
if?如果忽略它,prime只能返回 1。但对于复合参数,它会返回 0。 -
好吧,它永远不会打印出来。这是一个可靠的迹象:P