[英]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.