我写了一段代码来检查数字是否为质数。它可以在Powershell中使用,但不能在在线提交平台上使用。
我已经重新阅读了如何定义数字是否为质数,而我找不到在代码中可能遗漏的其他内容。
x = int(input('Please enter a number: '))
if x > 1:
for i in range(2, x):
if (x % i) == 0:
print('The number you inputted is not a prime number.')
break
else:
print('The number you inputted is a prime number.')
break
else:
print('The number you inputted is not a prime number.')
应打印出数字是否为质数。
答案 0 :(得分:1)
您可以使用for-else
构造,以便仅在循环结束时确定质数,而不会因发现除数而中断。另外,寻找除数时,您只需要迭代输入数字的平方根即可:
x = int(input('Please enter a number: '))
for i in range(2, int(x ** .5) + 1):
if x % i == 0:
print('The number you inputted is not a prime number.')
break
else:
print('The number you inputted is a prime number.')
答案 1 :(得分:0)
好吧,首先,您必须删除最里面的else子句。
例如,假设x = 9。控制流将从i = 2开始输入for子句。它将测试x%i == 0,即x是否可被i整除。不是。然后转到else子句。打印“您输入的数字是质数”并中断,结束for循环。那不是你想要的。
查看数字是否可被所有i整除后,您仅得出数字为质数。也就是说,您希望包含数字的代码为质数(print(“输入的数字为质数”))在for循环之外。
总体上需要一些调整。这是一个可行的解决方案:
x = int(input('Please enter a number: '))
if x > 1:
for i in range(2, x):
if (x % i) == 0:
print('The number you inputted is not a prime number.')
break
if i==x-1:
print('The number you inputted is a prime number.')
else:
print('The number you inputted is not a prime number.'
答案 2 :(得分:0)
x = int(input('Please enter a number: '))
if x > 1:
for i in range(2, x):
if (x % i) == 0:
print('The number you inputted is not a prime number.')
break
else:
print('The number you inputted is a prime number.')
else:
print('The number you inputted is not a prime number.')
此更正有效!
答案 3 :(得分:0)
这是一个按照您尝试代码的方式建模的解决方案。请注意,有时,如果您从某些网站复制代码,则可能会遇到缩进的代码格式化问题/问题。例如,当我从programiz.com: prime-number复制类似的代码块时,它反复返回缩进错误。我唯一可以解决的方法是手动键入代码逻辑。
也许有人可以尝试解决此问题,方法是将代码复制粘贴到纯文本编辑器(如记事本)中,然后将其复制粘贴到正在使用的IDE中。
def is_prime(num):
isprime = False
# prime numbers are greater than 1
if (num>1):
for i in range(2,num):
# check if divisible by any number
# other than itself and 1
if (num % i) == 0:
isprime = False
break
# Not divisible by any number
# other than itself and 1
else:
isprime = True
# numbers 0 and 1 are not prime numbers
else:
isprime = False
return isprime
is_prime(31), is_prime(42)
输出:
(True, False)
答案 4 :(得分:0)
我想提出一种更Python化的方式:
x = int(input('Please enter a number: '))
if x<2:
print('The number you inputted is not a prime number.')
elif x==2:
print('The number you inputted is a prime number.')
else:
y = range(2,x)
mod = map(lambda a:divmod(x,a)[1],y)
if all(mod):
print('The number you inputted is a prime number.')
else:
print('The number you inputted is not a prime number.')
答案 5 :(得分:-2)
如何删除else语句。您真的需要检查所有数字2 ...(k-1)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>