计算列表中的素数

时间:2018-08-11 01:23:30

标签: python python-3.x

在Python 3中,我试图编写一个计算列表中素数数量的函数,有人可以帮我吗?

def function(x):

  array = []
  aa = len(x)

  for num in x :
    if (num == 1 or num ==2):
      array.append()
    elif num >2:
      for i in range (2, aa):
        if (num % i )== 0:
          array.append()
        else:
          print (num)
          array.append(num)

  return len(array)

z = [4,5,6,7,8,9,10]
print (function(z))

但是显示错误的结果!

3 个答案:

答案 0 :(得分:0)

这是我对您代码的修正。

def count_primes_in_list(numbers):
    primes = []

    for num in numbers:
        if num == 2:
            primes.append(num)
        else:
            is_prime = True
            for i in range(2, num):
                if num % i == 0:
                    is_prime = False
                    break

            if is_prime:
                print (num)
                primes.append(num)

    return len(primes)


z = [4, 5, 6, 7, 8, 9, 10]
print (count_primes_in_list(z))

我将为初学者提供一些注意事项。不要为方法和变量使用保留字或类似类型的单词,而要用描述性的方式命名。将function更改为count_primes_in_list,将array更改为primes,将x更改为numbers,依此类推。您的素数测试不正确。质数是一个大于1的数字,不能除以另一个大于1且小于其自身的数字。在python中,请勿在测试中加上()。

答案 1 :(得分:0)

您的逻辑有点错误,我不确定您认为array.append()应该怎么做。与len(x)无关。注意:1不是素数。

您可以在else:循环中使用for子句,这意味着仅在for循环完成时才执行,因此,如果您break提早退出,它就不会执行。因此,如果num可以被任意数字分隔符else:整除,请添加到array

def function(x):
    array = []

    for num in x:
        if num <= 1:
            continue
        for i in range(2, num):
            if (num % i) == 0:
                break
        else:
            print(num)
            array.append(num)

    return len(array)

In []:
z = [4, 5, 6, 7, 8, 9, 10]
print(function(z))

Out[]:
5
7
2

注意:有很多更有效的检查素数的方法,但这对于较小的数字已经足够了。

答案 2 :(得分:0)

def countPrime(num):
    d=0
    for n in num:
      if n>1:
         for i in range(2,n):
            if (n%i)==0:
                break
            else:
                d+=1

    return d
if __name__ == '__main__':
    num=[]
    cot=int(input())
    for i in range(cot):
        numbers.append(int(input()))
    
    print(countPrime(num))