当前位置:网站首页>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月结束了贪心算法的题,开启“巧解数学问题”类的题目
边栏推荐
- 2022河南萌新联赛第(四)场:郑州轻工业大学 A - ZZULI
- [Digital IC hand-tear code] Verilog fixed priority arbiter | topic | principle | design | simulation
- MySql字符串拆分实现split功能(字段分割转列、转行)
- Mysql存储json格式数据
- MySQL(7)
- 利用浏览器本地存储 实现记住用户名的功能
- MySQL安装常见报错处理大全
- JUC(二)原子类:CAS、乐观锁、Unsafe和原子类
- Google notes cut hidden plug-in installation impression
- 【C语言】LeetCode26.删除有序数组中的重复项&&LeetCode88.合并两个有序数组
猜你喜欢

利用浏览器本地存储 实现记住用户名的功能

去字节跳动自动化测试二面原题(根据录音整理)真实有效 26

canvas 像素操作(图片像素操作)

MySQL(7)

ERROR 1045 (28000) Access denied for user 'root'@'localhost'Solution

21天学习挑战赛安排

CAN光端机解决泰和安TX3016C消防主机长距离联网问题 实现CAN与光纤之间的双向数据智能转换

navicat连接MySQL报错:1045 - Access denied for user ‘root‘@‘localhost‘ (using password YES)

What do interview test engineers usually ask?The test supervisor tells you
![[PSQL] 窗口函数、GROUPING运算符](/img/95/5c9dc06539330db907d22f84544370.png)
[PSQL] 窗口函数、GROUPING运算符
随机推荐
MySQL 多表关联一对多查询实现取最新一条数据
MySQL 8.0.29 set and modify the default password
在 .NET MAUI 中如何更好地自定义控件
ERROR 1045 (28000) Access denied for user 'root'@'localhost'Solution
LeetCode刷题系列 -- 787. K 站中转内最便宜的航班
认识消防报警联网中CAN光纤转换器的光纤接口和配套光纤线缆
golang环境详细安装、配置
Towhee 每周模型
Matlab学习第二天
MySQL 5.7 upgrade to 8.0 detailed process
2022年7月学习计划完成情况
navicat新建数据库
大屏UI设计-看这一篇就够了
H5如何实现唤起APP
Introduction and use of apifox (1).
ES6——class类实现继承
How Navicat Connects to MySQL
The company does not pay attention to software testing, and the new Ali P8 has written a test case writing specification for us
07-传统的生产者消费者问题、防止虚假唤醒
Android Studio 实现登录注册-源代码 (连接MySql数据库)