求小于n的质数个数

Posted mydesky2012

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求小于n的质数个数相关的知识,希望对你有一定的参考价值。

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

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的质数个数的主要内容,如果未能解决你的问题,请参考以下文章

给出一个自然数N,小于N且与N互质的自然数的个数为AN,求A2006

模板小程序求小于等于N范围内的质数

模板小程序求小于等于N范围内的质数

如果记小于n且与n互质的数的个数为Φ(n),则在数论上叫函数Φ(n)为欧拉函数,求Φ(60)

求素数个数

求素数个数