Python 数到给定数的素数
我目前正在尝试创建一个函数来计算素数的个数,直到一个给定的数字。然而,我认为我的代码的逻辑有一些问题,因为我目前没有得到正确数量的素数。有人能帮我找出我的代码有什么问题吗?谢谢Python 数到给定数的素数,python,python-3.x,Python,Python 3.x,我目前正在尝试创建一个函数来计算素数的个数,直到一个给定的数字。然而,我认为我的代码的逻辑有一些问题,因为我目前没有得到正确数量的素数。有人能帮我找出我的代码有什么问题吗?谢谢 def count_primes(num): ctr = 0 for i in range(num+1): for x in range(2,i): if (i%x) != 0: ctr += 1 b
def count_primes(num):
ctr = 0
for i in range(num+1):
for x in range(2,i):
if (i%x) != 0:
ctr += 1
break
else:
break
return ctr
print(count_primes(10))
#I get 4
print(count_primes(100))
#I get 49
逻辑的问题如下——对于每一个数字,你只需检查它是否可以被2整除并中断。让我们模拟i=9。那么对于x=2,9%2=0但9不是素数,而是作为1计算。检查以下代码-
def isPrime(n):
if not isinstance(n, int):
raise ValueError('n must be integer')
if n <= 0:
raise ValueError('n is negative or zero')
if n==1: return False
for i in range(2, n):
if n % i == 0:
return False
return True
def countPrime(n):
ctr = 0
for i in range(1, n+1):
if isPrime(i):
ctr += 1
return ctr
免责声明-有更有效的方法来检查一个数字是否为素数你能解释一下你如何找到素数的逻辑吗?在第二个for循环中,当你打破它时,你只迭代一次,不管你在for循环中添加一些printi和printx语句时看到了什么?您尝试过这个吗?请注意,您的解决方案对于isPrime1返回True