当前位置: 首页 > article >正文

【从零开始的LeetCode-算法】3233. 统计不是特殊数字的数字数量

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

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

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

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

示例 1:

输入: l = 5, r = 7

输出: 3

解释:

区间 [5, 7] 内不存在特殊数字。

示例 2:

输入: l = 4, r = 16

输出: 11

解释:

区间 [4, 16] 内的特殊数字为 4 和 9。

提示:

  • 1 <= l <= r <= 10^9

我的解答:

class Solution {
    public int nonSpecialCount(int l, int r) {
        int res = r - l + 1;
        int n = (int)  Math.sqrt(r);
        int[] prime_number = new int[n + 1];
        // 单独判断范围内是否包含4
        if(l <=4 && r>=4) res--;
        // 从3开始遍历奇数,因为偶数都能被2整除
        for(int i = 3; i <= n; i+=2){
            // 判断i是否是质数
            if(prime_number[i] == 0){
                // 如果该质数的乘积在【l,r】范围内,则表示范围内有一个特殊数字i*i,需要减一
                if(i*i >=l && i*i <= r){
                    res--;
                }
                // 后面所有i的倍数都是质数,因为能被i整除
                for(int j = i * 2;j <= n;j += i){
                    prime_number[j] = 1;
                }
            }
        }
        return res;
    }
}


http://www.kler.cn/a/407664.html

相关文章:

  • 由于centos停更,yum、docker等不支持,采用阿里云仓库搭建K8S
  • 后端开发详细学习框架与路线
  • ElasticSearch7.x入门教程之集群安装(一)
  • Wekan看板安装部署与使用介绍
  • Vue实训---0-完成Vue开发环境的搭建
  • Python 使用 Token 认证方案连接 Kubernetes (k8s) 的详细过程
  • 数据指标与标签在数据分析中的关系与应用
  • 计算机网络-VPN虚拟专用网络概述
  • Spring Framework 的版本历史和JDK、Springboot对应关系
  • 数据预处理——相关性分析详解
  • 实验室管理流程优化:Spring Boot技术实践
  • 数据结构第一讲
  • windows C#-取消任务列表(上)
  • 解决前端页面报错:Not allowed to load local resource
  • Linux高阶——1123—
  • 恋爱通信史之身份验证和不可抵赖性
  • MySQL--库的操作
  • SpringCloud处理Websocket消息过长自动断开连接
  • Quivr - 用 AI 构建你的第二大脑
  • 网络安全服务人才发展路线图
  • Spring Boot OA:企业数字化转型的利器
  • Python小白学习教程从入门到入坑------习题课5(基础巩固)
  • MS16-075(烂土豆)
  • Selenium+Java(19):使用IDEA的Selenium插件辅助超快速编写Pages
  • Windows11笔记本装windows10
  • PCA9685的配置学习