Python 素数指示器,指示作为素数的巨大非素数
这段代码正在运行,但它正在将大量的数字计算为素数,例如3456734572525。5个测试用例中有4个成功。首先,我认为它在0或十进制数字上失败了,但事实并非如此。for循环永远不会运行到底,因为无论Python 素数指示器,指示作为素数的巨大非素数,python,numbers,Python,Numbers,这段代码正在运行,但它正在将大量的数字计算为素数,例如3456734572525。5个测试用例中有4个成功。首先,我认为它在0或十进制数字上失败了,但事实并非如此。for循环永远不会运行到底,因为无论a%i==0你都会打破循环。您应该将print(“YES”)移到循环之外,并使用returnenstead ofbreak确保在循环中断时函数不会运行此代码。试试这个: def main(): try: a = int(input()) if isinstan
a%i==0
你都会打破循环。您应该将print(“YES”)
移到循环之外,并使用return
enstead ofbreak
确保在循环中断时函数不会运行此代码。试试这个:
def main():
try:
a = int(input())
if isinstance(a, int):
a = int(a)
if a ==2:
print('YES')
if a > 1:
for i in range(2, a):
if a % i == 0:
print('NO')
break
else:
print('YES')
break
else:
print('NO')
else:
print('NO')
except EOFError:
print('NO')
except ValueError:
print('NO')
main()
您在第一次运行时打破了循环
假设你把9放进去,想想看
它将无法满足==2条件
然后点击%i==0条件,当9%2=1时,它将返回YES
这个程序还有很多错误, 但是主要的问题是在第一次运行后中断,这没有任何意义, 如果删除了中断符并在else上打印if a%i==0,则它将起作用,但您可以在其中添加许多优化。
我建议参加一些关于python的课程/教程,而不是在没有什么先验知识的情况下尝试加入
祝你好运你的代码一开始就不正确。
在一次“如果”检查之后,在循环中使用“中断”,因此基本上只检查一次。所以你的代码所做的就是判断这个数字是否可以被2整除
def main():
try:
a = int(input())
if isinstance(a, int):
a = int(a)
if a ==2:
print('YES')
if a > 1:
for i in range(2, a):
if a % i == 0:
print('NO')
return
print('YES')
return
else:
print('NO')
else:
print('NO')
except EOFError:
print('NO')
except ValueError:
print('NO')
main()
只要你找到一个非除数,你就会跳出循环。该代码将21标识为素数。在你的脑海里走过它。
try:
a = int(input())
flag = 0
if isinstance(a, int):
a = int(a)
if a==1:
print('Neither')
elif a ==2:
print('YES')
else:
for i in range(2, a):
if a % i == 0:
flag=1
break
else:
print('NO')
except EOFError:
print('NO')
except ValueError:
print('NO')
if flag:
print('NO')
else:
print('YES')