我编写了这个代码来判断一个数字是否是素数(Y)或非(N)。
number = int(input("Type a value for n. "))
if number > 1:
for i in range(2, number):
if (number % i)==0:
print("N")
break
else:
print("Y")
else:
for i in range (number, -2):
if ((number) % i)==0:
print("N")
break
else:
print("Y")而且起作用了。但是当我把一个小于1的数字(数字< 1),比如-7,代码给了我一个错误的答案。
我已经做了一些修改,并意识到:
number = int(input("Type a value for n. "))
if number > 1:
for i in range(2, number):
if (number % i)==0:
print("N")
break
else:
print("Y")
else:
for i in range (number,-2):
if (number % i)==0:
print("N")
break
else:
print("Y")*,但当我说:-7,答案是N(错)。-7是素数
有人能帮我吗?
发布于 2017-05-08 15:58:27
这是因为python中的范围/间隔是部分封闭的;它们是在右边打开的。所以当你这么做
[i for i in range(2,10)]你会得到
2,3,4,5,6,7,8,9
注意,2在那里,但10不在
类似的
[i for i in range(-10,-2)]将包括-10,(因此数字%i ==0为真),但不包括-2。
发布于 2017-05-08 15:03:00
我会使用abs,绝对值函数。它使消极的积极和积极的。
number = abs(int(input("Type a value for n. ")))
if number > 1:
for i in range(2, number):
if (number % i)==0:
print("N")
break
else:
print("Y")
else:
for i in range (number, -2):
if ((number) % i)==0:
print("N")
break
else:
print("Y")https://stackoverflow.com/questions/43851017
复制相似问题