[英]prime numbers in python same programs different outputs
我有这个任务,我必须编写一个代码来确定一个数字是否是素数,我无法提出解决方案,所以我搜索了网络并找到了以下代码(第一个)然后我编写了完全相同的代码,但名称不同,它不适用于 65、75 等数字,并说它们是质数,而它们不是。 你能帮我找出我做错了什么吗! 先感谢您!
我复制的代码:
num=int(input())
if num > 1:
for i in range(2, int(num/2)+1):
if (num % i) == 0:
print(num, "is not a prime number")
break
else:
print(num, "is a prime number")
else:
print(num, "is not a prime number")
我的代码:
addad=int(input())
if addad>1:
for i in range(2,int(addad/2)+1):
if (addad%i)==0:
print("not prime")
break
else:
print("prime")
break
else:
print("prime")
他们不一样。
在上面的代码中,您使用for...else
但在第二个代码中您使用了if...else
。 仔细看看凹痕。 空白在 python 中具有重要意义。
我认为您可能需要阅读一些关于 python 中的 for/else的内容。 你肯定会发现不同之处。
很少描述, else
如果for
循环结束(没有中断),则与for
相同的缩进将运行。 因此,在第一个片段中, else
将在for
的末尾运行,条件是没有发生中断,而在您编写的代码中, else
位于for
块中,并将在每个循环中运行,并且绑定到上面的if
命令。
这是一种方法,请注意 1 不是质数:
def check_prime(x):
if x >= 2:
for y in range(2,x):
if not (x % y):
return 'not prime'
else:
return 'not prime'
return 'prime'
check_prime(int(input('Enter number to check: ')))
Output:
Enter number to check: 31
'prime'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.