我正在创建一个Python程序来确定一个数字是否为素数。这就是我所拥有的:
print("Please enter your number:")
number = int(input())
if number > 2:
for i in range (2,number):
if (number % i) == 0:
print(number, "is not prime")
break
else:
print(number, "is prime")
break
else:
print(number, "is not prime")
它适用于每个用例,除了2.为什么?我该如何解决?
答案 0 :(得分:3)
因为2不大于2,所以它属于其他条件。
要解决此问题,您必须为2创建一个特殊情况:
starting with: {'20170410_1133': 'A', '20170412_1133': 'B'}
Traceback (most recent call last):
File "test.py", line 13, in <module>
sorted_dict = OrderedDict(sorted(incoming_dict, key=_fetch_ts))
File "/usr/lib/python2.7/collections.py", line 69, in __init__
self.__update(*args, **kwds)
File "/usr/lib/python2.7/_abcoll.py", line 571, in update
for key, value in other:
ValueError: too many values to unpack
编辑:使用for-else作为@Azat Ibrakov建议
答案 1 :(得分:0)
请在下面找到我的代码,我绕过了2。
值'2'从不经历for循环,所以它默认打印'Prime'。
对于所有其他人,它按预期工作。
for i in range (1,100):
self.bar(i)
def bar(self,number):
if number > 1 :
for i in range(2,number):
r = number % i
if r == 0 :
return
print(str(number) + ' : Prime')
2:Prime 3:Prime 5:Prime 7:Prime 11:Prime 13:Prime 17:
Prime 19:Prime 23:Prime 29:Prime 31:Prime 37:Prime 41:
Prime 43:Prime 47:Prime 53:Prime 59:Prime 61:Prime 67:
Prime 71:Prime 73:Prime 79:Prime 83:Prime 89:Prime 97: 素