Python素数程序不起作用

时间:2017-04-12 14:34:17

标签: python python-3.x loops primes

我正在创建一个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.为什么?我该如何解决?

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:   素