我正在尝试编写一个简单的Python (3.5版)代码来测试给定整数的素性。例如,当我输入97时,我得到四个True输出。我做错了什么?
# Testing for primality: True or False 25.11.2015
# True means prime, False means divisible
num = int(input('Input an integer for primality test: '))
if num < 2 or num % 2 == 0:
print('False')
else:
for i in range(3, int(num ** (1/2)) + 1, 2):
if num % i == 0:
print('False')
break
else:
print('True')发布于 2015-11-28 05:43:52
只需取消最后两行的缩进:
# Testing for primality: True or False 25.11.2015
# True means prime, False means divisible
num = int(input('Input an integer for primality test: '))
if num < 2 or num % 2 == 0:
print('False')
else:
for i in range(3, int(num ** (1/2)) + 1, 2):
if num % i == 0:
print('False')
break
else:
print('True')在Python语言中,for可以有一个else子句,只有当for循环自然耗尽其迭代时才会调用该子句。因此,如果您从for循环执行break,它将不会打印True。它防止了其他语言需要flag做的事情在循环之外进行测试,如另一个答案所示。
但是,您还有一个额外的错误,那就是2返回False。
发布于 2015-11-28 05:12:13
您不能在else语句中打印True .Instead您应该使用一个标志,并在测试失败时将其设置为1,然后中断循环
flag = False
for i in range(3, int(num ** (1/2)) + 1, 2):
if num % i == 0:
flag = True
break
if flag:
print('False')
else:
print('True')https://stackoverflow.com/questions/33964807
复制相似问题