【每日一题】3233. 统计不是特殊数字的数字数量

 

给你两个 正整数 l 和 r。对于任何数字 xx 的所有正因数(除了 x 本身)被称为 x 的 真因数。

如果一个数字恰好仅有两个 真因数,则称该数字为 特殊数字。例如:

  • 数字 4 是 特殊数字,因为它的真因数为 1 和 2。
  • 数字 6 不是 特殊数字,因为它的真因数为 1、2 和 3。

返回区间 [l, r] 内 不是 特殊数字 的数字数量。

 

class Solution:
    def countPrimes(self, n: int) -> int:
        # 埃氏筛:时间复杂度:O(nloglogn)。
        # 质数标记为0。1不是质数
        isPrime  = [0] * n
        ans = 0
        for i in range(2, n):
            if isPrime [i] == 0:
                ans += 1
                if i*i < n:
                    for j in range(i * i, n, i):
                        isPrime[j] = 1
        return ans

 

posted @ 2024-11-22 23:02  xiaoxinlong  阅读(2)  评论(0编辑  收藏  举报