我在Python中试用了这个代码,用于测试数字是否为素数。
x = int(raw_input('Enter a number:'))
for i in range (2, x):
if (x % i) == 0:
print (x, 'is not prime')
else:
print(x, 'is prime')
但是当我输入25时,我得到以下输出。为什么?
答案 0 :(得分:1)
你必须使用break
x=int (raw_input('Enter a number:'))
for i in range (2,x):
if (x%i)==0:
print (x,'is not prime')
break
else:
print(x,'is prime')
大于1的正整数,除了1之外没有其他因素,数字本身称为素数。因此,最好检查变量x是否大于1.
x=int (raw_input('Enter a number:'))
# prime numbers are greater than 1
if x > 1:
# check for factors
for i in range(2,x):
if (x % i) == 0:
print(x,"is not a prime number")
print(i,"times",x//i,"is",x)
break
else:
print(x,"is a prime number")
# if input number is less than
# or equal to 1, it is not prime
else:
print(x,"is not a prime number")
答案 1 :(得分:1)
由于您正在从2
循环到x
以获取值x,即循环x-2
次,并且您正在为每次迭代打印。因此, x = 25
的 23 打印语句。
您可以这样做:
x = int (raw_input('Enter a number:'))
answer = "{} is prime"
for i in range (2,x):
if (x%i)==0:
answer = "{} is not prime"
break
else:
pass
print(answer.format(str(x)))
答案 2 :(得分:1)
当你运行这段代码时,python将继续在for循环中为该范围内的所有i执行代码。
当你输入25时,python首先将它除以2.由于25%2 = 1,它打印出它是素数
它对3和4的作用相同,并且打印都是素数
在5,它计算25%5 = 0并正确打印出25不是素数
试试这个
x=int (raw_input('Enter a number:'))
for i in range (2,x):
if (x%i)==0:
print(x,'is not prime')
break
elif i==x-1:
print('x is prime')
Python将数字除以i。如果在任何时候余数为0,则打印出该数字不是素数并且代码结束。
如果余数不为零,则代码循环回到for循环的开头
如果x%i在倒数第二次迭代中从未等于零(由i == x-1表示),则代码打印出x为素数
答案 3 :(得分:0)
使用 for 循环语句
x = int(raw_input('Enter a number:'))
for i in range(1, x):
if x <= 2:
print(x, 'is prime')
break
elif (x % i) == 0:
print (x, 'is not prime')
break
else:
print(x, 'is prime')
break