当前位置:网站首页>leetcode 204. Count Primes 计数质数 (Easy)
leetcode 204. Count Primes 计数质数 (Easy)
2022-08-02 05:03:00 【okokabcd】
一、题目大意
https://leetcode.cn/problems/count-primes
给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。
示例 1:
输入:n = 10
输出:4
解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
示例 2:
输入:n = 0
输出:0
示例 3:
输入:n = 1
输出:0
提示:
- 0 <= n <= 5 * 106
二、解题思路
输入一个整数,输出也是一个整数,表示小于输入数的质数的个数。
埃拉托斯特尼筛法,是判断一个整数是否是质数的方法。并且它可以在判断一个整数n时,同时判断所小于n的整数,因此非常适合这个问题。其原理是:从1到n遍历,假设当前遍历到m,则把所有小于n的、且是m的倍数的整数标为和数;遍历完成后,没有被标为和数的数字即为质数。
三、解题方法
3.1 Java实现
public class Solution {
public int countPrimes(int n) {
if (n <= 2) {
return 0;
}
boolean[] prime = new boolean[n];
Arrays.fill(prime, true);
int i = 3;
int sqrtn = (int) Math.sqrt(n);
// 偶数一定不是质数
int count = n / 2;
while (i <= sqrtn) {
// 最小质因子一定小于等于开方数
for (int j = i * i; j < n; j += 2 * i) {
// 避免偶数和重复遍历
if (prime[j]) {
count--;
prime[j] = false;
}
}
do {
i+= 2;
// 避免偶数和重复遍历
} while (i <= sqrtn && !prime[i]);
}
return count;
}
}
四、总结小记
- 2022/8/1 7月结束了贪心算法的题,开启“巧解数学问题”类的题目
边栏推荐
- JUC(二)原子类:CAS、乐观锁、Unsafe和原子类
- 腾讯注册中心演进及性能优化实践
- MySQL String Concatenation - Various String Concatenation Practical Cases
- 2022河南萌新联赛第(四)场:郑州轻工业大学 C - 最大公因数
- 18年程序员生涯,读了200多本编程书,挑出一些精华分享给大家
- MobaXsterm如何使用
- Google notes cut hidden plug-in installation impression
- MYSQL 唯一约束
- navicat连接MySQL报错:1045 - Access denied for user ‘root‘@‘localhost‘ (using password YES)
- 区块元素、内联元素(<div>元素、span元素)
猜你喜欢
随机推荐
ApiPost 真香真强大,是时候丢掉 Postman、Swagger 了
MySQL 的 limit 分页查询及性能问题
【语义分割】FCN
MySQL String Concatenation - Various String Concatenation Practical Cases
matlab simulink 飞机飞行状态控制
navicat连接MySQL报错:1045 - Access denied for user ‘root‘@‘localhost‘ (using password YES)
Android Studio 实现登录注册-源代码 (连接MySql数据库)
Mysql 回表
Redis常见题型
"Digital reconstruction of the system, getting the CEO is the first step"
Mycat2.0搭建教程
力扣 2127. 参加会议的最多员工数 拓扑剪枝与2360补充
2021年软件测试面试题大全
MySQL 5.7升级到8.0详细过程
RADIUS 如何提高 WiFi 无线网络安全性?
JDBC revisited
MySQL 5.7详细下载安装配置教程
canvas 像素操作(图片像素操作)
07-传统的生产者消费者问题、防止虚假唤醒
MySQL如何创建用户









