[英]'For' iterator in python doesn't return the right answer
我用python編寫了此代碼,以計算給定值下的素數。 當我執行代碼時,它將打印“ 0”。 誰能告訴我為什么我的代碼出錯了?
def is_prime(x):
if x<2:
return False
else:
for value in range(2, x):
if x%value == 0:
return False
else:
return True
def primes_in(x):
primes = [ ]
for value in range(2, x+1):
if is_prime(value):
primes.append(1)
elif not is_prime(value):
primes.append(0)
else:
primes.append(0)
return sum(primes)
print primes_in(25)
請參閱范圍功能 。
range(start, stop[, step])
for value in range(2, x+1):
if x%value == 0:
return False
這意味着值從2
變為x
包括在內 。 這意味着必定會有x%value == 0
。 因此,您的函數始終返回False,然后素數為0
的列表。
您應該使用for value in range(2, x)
。
問題出在is_prime函數中,您正在從2循環到x
包括兩者),因此x%x始終為0,因此它將始終返回False。
您只需要循環直到數字的平方。
示例代碼-
def is_prime(x):
if x<2:
return False
else:
for value in range(2, int(x**(1/2))+1):
if x%value == 0:
return False
else:
return True
另外,在其他功能中,您應該啟動
def is_prime(x):
if x<2:
return False
else:
if x == 2:
return True
for value in range(2, int(x**(0.5)) + 1):
if x%value == 0:
return False
return True
def primes_in(x):
primes = []
for value in range(2, x+1):
if is_prime(value) == True:
primes.append(1)
elif is_prime(value) == False:
primes.append(0)
else:
primes.append(0)
return sum(primes)
print primes_in(25)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.