素数查找器,它';python中的s
代码中有一个逻辑缺陷,我就是不知道它在哪里。更改此项:素数查找器,它';python中的s,python,Python,代码中有一个逻辑缺陷,我就是不知道它在哪里。更改此项: # this program will test numbers and check if they are prime numbers or even numbers num = eval(input('Enter a number: '))#generating user input for i in range(num): x = 2 if num % 2 == 0: #test for even numbers
# this program will test numbers and check if they are prime numbers or even numbers
num = eval(input('Enter a number: '))#generating user input
for i in range(num):
x = 2
if num % 2 == 0: #test for even numbers
print(num, x, 'is even')
else:
while num % x != 0:#the idea here is to enter a loop and test the numbers against x=2, x +=1... to check if they are divisible
x += 1 #by x
break
if num % x == 0: #x is however either 2 or 3. it never advances to four and numbers like 25 become prime numbers
print(num,x, 'is odd')
else:
print(num,x, 'is prime')
num -=1
致:
您可以使用以下工具更快地测试素数:
num = input('Enter a number: ')
if num.is_digit(): #evaluate if is a number
num = int(num)
else:
#broke code logic
num = 0
在代码中:
num > 1 and all(num % i for i in xrange(2, sqrt(num)))
您的基本问题在于以下内容:
num = int(input('Enter a number: '))
for i in range(num):
x = 2
if num % 2 == 0:
print(num, x, 'is even')
else:
if num > 1 and all(num % i for i in xrange(2, sqrt(num))):
print(num,x,'is prime')
else: print(num,x,"is odd")
num -=1
。。。您有一个无条件的中断
,这意味着循环不会运行超过一次。比较
while num % x != 0:
x += 1
break
使用
int()
而不是eval()
!是的,这是家庭作业,有很多问题。什么是for
循环-您从未在任何地方使用i
?请注意,range()
从0开始,除非您另有指定。如果num不能被2整除,它将不能被任何其他偶数整除,因此您可以使用x+=2
跳过所有偶数num<代码>当数值%x!=0与相同,而num%x
。我使用了int(),但它不起作用!这对你的成功至关重要,实际上也是做这个家庭作业的原因。也就是说,编写家庭作业并不是为了获得正确的行为,而是在尝试获得正确行为的同时找出如何解决遇到的问题。
while num % x != 0:
x += 1
break
def is_prime(n):
if n < 4:
return n in {2, 3}
elif not n % 2:
# even
return False
else:
return all(n % div for div in range(3, int(n ** 0.5 + 1.), 2))
def main():
print("Show all primes up to what number?")
upto = int(input(": "))
for n in range(2, upto + 1):
if is_prime(n):
print("{} is prime".format(n))
else:
print("{} is {}".format(n, ["even", "odd"][n % 2]))
main()