[英]Incorrect Prime number list in python
我以為我的Python素數列表很好。 但是,它在看到它不能被2整除的那一刻就打印出數字。我試圖遍歷包含其他質數(例如3、5、7)的列表中的循環,但是它似乎仍然無法正常工作。
primes = []
input = raw_input("> ")
input2 = raw_input("> ")
for num in range(int(input), int(input2)):
for j in primes:
if not primes:
break
else:
if j % num ==0:
break
for i in range(2, num):
if num % i == 0:
break
else:
primes.append(num)
break
print primes
打印出可被3整除但不能被2整除的數字。
for num in range(int(input), int(input2)):
if not primes:
break
else:
for j in primes:
if j % num ==0:
break
for i in range(2, num):
if num % i == 0:
break
else:
primes.append(num)
break
print primes
此代碼正在打印一個空列表。 從邏輯上來說,這對我來說很有意義,但是代碼並未按照我期望的方式執行。 這是怎么了???
您的第一個for循環不會做任何有用的事情:
for num in range(int(input), int(input2)):
for j in primes: #there is nothing in list 'primes'
if not primes: #this won't execute
break #this won't execute
else: #this will execute
if j % num ==0: #this will execute
break #break if statement, repeat for loop
for i in range(2, num):
if num % i == 0:
break
else:
primes.append(num)
break
print primes
話雖如此,這將是獲得所需輸出的最便捷方法:
primes=[]
input = raw_input("> ")
input2 = raw_input("> ")
for num in range(int(input), int(input2)):
if all(num%i!=0 for i in range(2,num)):
primes.append(num)
print primes
您的第二個“其他”似乎在錯誤的位置。 試試這個程序的修改版本:
primes = []
input = raw_input("> ")
input2 = raw_input("> ")
for num in range(int(input), int(input2)+1):
# prime numbers are greater than 1
if num > 1 :
for i in range(2, num):
if num % i == 0:
break
else:
primes.append(num)
print primes
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.