在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))
但是显示错误的结果!
答案 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))