在Python中使用列表查找素数但出现错误

时间:2018-09-01 15:31:18

标签: python python-3.x

a = [int(x) for x in input().split(' ')]
print(a)
for i in a:
    if a%i==0:
        pass
        break
    else:
        print(i)

我正在尝试在列表'a'中打印素数。 但是我出错了

4 23 21 1
[4, 23, 21, 1]
Traceback (most recent call last):
  File "C:/Python35/primenumber.py", line 4, in <module>
    if a%i==0:
TypeError: unsupported operand type(s) for %: 'list' and 'int' 

3 个答案:

答案 0 :(得分:1)

您得到的错误清楚地提到了为什么得到它。

if a%i==0:
TypeError: unsupported operand type(s) for %: 'list' and 'int' 

您正在列表'a'和整数'i'上执行'%'操作。除了提供列表“ a”,您还必须提供一个整数。不支持按整数对%进行列表操作。这也是您给出的错误。

答案 1 :(得分:0)

a是一个列表。

a % i 

没有任何意义。另外,没有任何程序可以检查代码中的素数。您可以考虑使用sympy.isprime测试素数。

请注意素数只能有两个因素。

import sympy
a = [int(x) for x in input().split(' ')]
print(a)
for i in a:
    if sympy.isprime(i):
        print(i)

产生

答案 2 :(得分:-1)

查找素数并不容易,但是逻辑可以是这样的:

            print("Print your List")
            a = [int(x) for x in input().split(' ')]
            print(a)
            for i in a:
                 if(i>1):
                      for s in range(2,i):
                           if(i%s)==0:
                                print("Not a Prime Number")
                                break
                           else:
                                print("Prime number")
                                break