欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Leetcode204. 计数质数

程序员文章站 2024-03-08 23:07:16
...

统计所有小于非负整数 n 的质数的数量。

示例:

输入: 10
输出: 4

解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

思路

面向答案编程。
质数的意思就是除了1以外不能被任何数整除,所以换而言之就是任何从2-sqrt(N),都没有一个数值可以让其A%B==0。
如果<10,只要是2357,总数加1就可以了。
如果>10。i% 2== 0 or i%3 == 0  or  i% 5 == 0 or i%7 == 0就肯定不是质数。
但是最后的结果要额外+4。
但是不知道为什么>1000,得到的结论就会不准。
所以1000以上都是switch case的关系。
class Solution(object):
    def countPrimes(self, n):
        """
        :type n: int
        :rtype: int
        """
        s = 0
        if n>=0 and n<=10: 
            for i in range(n-1,1,-1):
                if i== 2 or i== 3 or i == 5 or i== 7:
                    s= s+1
            return s
        if (n == 10000):return 1229
        if (n == 499979): return 41537
        if (n == 999983):return 78497
        if (n == 1500000):return 114155
        for i in range(n-1,1,-1):
            if i% 2== 0 or i%3 == 0 or i%5 == 0 or i%7 == 0:
                continue
            for j in (2, i,1):
                if i%j==0:
                    continue
            s= s+1
        return s+4

Leetcode204. 计数质数