python - 计算素数的数量直到给定数量
问题描述
我目前正在尝试创建一个函数来计算素数的数量直到给定的数字。但是,我认为我的代码逻辑存在一些问题,因为我目前没有取回正确数量的素数。谁能帮我确定我的代码有什么问题?谢谢!
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 不是素数而是算作一。检查以下代码 -
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
免责声明 - 有更有效的方法来检查一个数字是否是素数
推荐阅读
- mysql - MySQL 事件可以立即删除多行吗?
- java - Java Spring Boot 覆盖注释错误
- ios - 如何在 SwiftUI 上登录 Facebook?
- r - Windows 的 conda 环境中的 r-base 错误
- python - 如何在快速的网络服务器上托管 CNN 神经网络?
- python - 从完全限定路径创建和写入文本文件
- java - 如何在碰撞后或经过一定时间后销毁子弹 LibGDX Box2d
- speech-recognition - 调试自定义词PocketSphinx.js的语音识别
- php - PHP递归函数通过引用传递
- python - 并行化 Dask 聚合