跳到主要内容

3233.统计不是特殊数字的数字数量

链接:3233.统计不是特殊数字的数字数量
难度:Medium
标签:数组、数学、数论
简介:返回区间 [l, r] 内 不是 特殊数字 的数字数量。

题解 1 - python

  • 编辑时间:2024-11-22
  • 执行用时:253ms
  • 内存消耗:16.86MB
  • 编程语言:python
  • 解法介绍:枚举素数,只有素数的乘积才是特殊数字
def get_primes(n: int) -> int:
arr = [True] * n
arr[0] = arr[1] = False
for i in range(2, n):
if arr[i]:
j = 2
while i * j < n:
arr[i * j] = False
j += 1
return arr
primes = get_primes(10 ** 5)
class Solution:
def nonSpecialCount(self, l: int, r: int) -> int:
num = 2
res = 0
while num ** 2 <= r:
if num ** 2 >= l and primes[num]:
res += 1
num += 1
return r - l + 1 - res