码迷,mamicode.com
首页 > 其他好文 > 详细

求小于n的质数个数

时间:2020-06-28 22:42:32      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:return   个数   素数   imp   就是   math   div   span   def   

分析问题,最笨的方法就是遍历,通过分析质数与合数的特点,可以缩小遍历的范围。

import math
# 小于自然数n的素数有多少个
def countPrime(n):
    if n <= 1:
        return 0
    else:
        count = 0
        i = 2
        while i <= n:
            if isPrime(i):
                count = count + 1
            i = i + 1
        return count
# 最笨的方法,遍历所有小于num的数,是否存在除了1之外的其他因数,如果不存在,则为素数。
# 判断一个自然数num是不是素数。如果一个数是合数,那么一定存在两个因数a和b,a<=sqrt(num), b>=sqrt(num)。因此可以将遍历范围缩小
def isPrime(num):
    divisor = math.sqrt(num)
    i = 2
    while i <= int(divisor):
        if num % i == 0:
            return 0
        i = i + 1
    return 1

if __name__ == "__main__":
    n = 20
    print(countPrime(n))

打印结果:8

求小于n的质数个数

标签:return   个数   素数   imp   就是   math   div   span   def   

原文地址:https://www.cnblogs.com/mydesky2012/p/13205207.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!