[英]Finding whether a number is prime or not python3
我编写了一个代码来确定一个数字是素数还是合数。 当我输入一个素数时,代码可以正常工作,但是当我输入一个复合数时,output 是:
enter number: 100
The number is not prime.
The number is prime.
我不希望The number is prime
output 用于复合数输入。 这是我的代码:
print ('This program tells whether the number is prime or not')
print ('')
def prime(x):
if x < 2:
print('The number is not prime.')
else:
for n in range(2, x - 1):
if x % n == 0:
print('The number is not prime.')
break
print('The number is prime.')
i = input('enter number: ')
prime(int(i))
请告诉我我能做些什么来纠正它。
问题是缩进,你必须移动最后一行的缩进并在之后添加一个break
,所以尝试使用:
print ('This program tells whether the number is prime or not')
print ('')
def prime(x):
if x < 2:
print('The number is not prime.')
else:
for n in range(2, x - 1):
if x % n == 0:
print('The number is not prime.')
break
print('The number is prime.')
break
i = input('enter number: ')
prime(int(i))
我明白为什么了。 if 之后你会错过 else 。 尝试这个:
print ('This program tells whether the number is prime or not')
print ('')
def prime(x):
if x < 2:
print('The number is not prime.')
else:
for n in range(2, x - 1):
if x % n == 0:
print('The number is not prime.')
break
else:
print('The number is prime.')
i = input('enter number: ')
prime(int(i))
if num > 1:
for n in range(2, x-1):
if x % n == 0:
print('The number is not prime.')
break
else:
print('The number is prime.')
else:
print('The number is not prime.')
只需在 for 循环中修复该缩进即可。 此外,这看起来更干净。
这是解决此问题的推荐方法。
不要使用硬编码的打印语句。
尝试返回True
或False
。
def is_prime(x:str):
if x < 2:
return False
else:
for n in range(2, int(x/2)): # Use this for more speed
if x % n == 0:
return False
return True
现在您可以通过调用is_prime
function 来检查数字是否为素数
print('Number is prime' if is_prime(6) else 'Number is not prime')
问题是,当您中断循环时,会调用最后一个打印语句。 如果您使用return
语句结束 function,您将不会到达最后一个打印语句。
def prime(x):
if x < 2:
print('The number is not prime.')
else:
for n in range(2, x - 1):
if x % n == 0:
print('The number is not prime.')
return
print('The number is prime.')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.