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

微信公众号优惠劵网站怎么做的/手机网站优化排名

微信公众号优惠劵网站怎么做的,手机网站优化排名,品牌网站开发,山东金城建设网站题目: 204. 计数质数 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例 1: 输入:n 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2: 输入:n 0 输出&…

题目:

204. 计数质数

给定整数 n ,返回 所有小于非负整数 n 的质数的数量

示例 1:

输入:n = 10
输出:4
解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

示例 2:

输入:n = 0
输出:0

示例 3:

输入:n = 1
输出:0

提示:

  • 0 <= n <= 5 * 106

方法一:暴力法(不推荐,仅作演示)

时间复杂度:O(n√n)
空间复杂度:O(1)

public class Solution {public int countPrimes(int n) {if (n <= 2) return 0;int count = 0;for (int i = 2; i < n; i++) {if (isPrime(i)) count++;}return count;}private boolean isPrime(int num) {if (num <= 1) return false;for (int i = 2; i * i <= num; i++) {if (num % i == 0) return false;}return true;}
}

方法二:埃拉托斯特尼筛法(基础版)

时间复杂度:O(n log log n)
空间复杂度:O(n)

import java.util.Arrays;public class Solution {public int countPrimes(int n) {if (n <= 2) return 0;boolean[] isPrime = new boolean[n];Arrays.fill(isPrime, true);isPrime[0] = isPrime[1] = false;for (int i = 2; i * i < n; i++) {if (isPrime[i]) {for (int j = i * i; j < n; j += i) {isPrime[j] = false;}}}int count = 0;for (boolean b : isPrime) {if (b) count++;}return count;}
}

方法三:埃氏筛优化版(跳过偶数)

时间复杂度:O(n log log n)
空间复杂度:O(n)

import java.util.Arrays;public class Solution {public int countPrimes(int n) {if (n <= 2) return 0;boolean[] isPrime = new boolean[n];Arrays.fill(isPrime, true);isPrime[0] = isPrime[1] = false;// 处理偶数for (int i = 4; i < n; i += 2) isPrime[i] = false;// 处理奇数for (int i = 3; i * i < n; i += 2) {if (isPrime[i]) {for (int j = i * i; j < n; j += 2 * i) {isPrime[j] = false;}}}int count = 0;for (int i = 2; i < n; i++) {if (isPrime[i]) count++;}return count;}
}

方法四:欧拉筛(线性筛)

时间复杂度:O(n)
空间复杂度:O(n)

import java.util.ArrayList;
import java.util.List;public class Solution {public int countPrimes(int n) {if (n <= 2) return 0;List<Integer> primes = new ArrayList<>();boolean[] isComposite = new boolean[n];for (int i = 2; i < n; i++) {if (!isComposite[i]) primes.add(i);for (int j = 0; j < primes.size() && i * primes.get(j) < n; j++) {isComposite[i * primes.get(j)] = true;if (i % primes.get(j) == 0) break;}}return primes.size();}
}

方法分析

  1. 暴力法:逐个检查每个数是否为质数,时间复杂度高,仅适用于极小的 n
  2. 埃氏筛:通过标记质数的倍数筛选合数,时间复杂度较低,适合大多数场景。
  3. 优化埃氏筛:跳过偶数处理,减少冗余操作,提高实际运行效率。
  4. 欧拉筛:每个合数仅被标记一次,时间复杂度最优,但实现稍复杂,适用于极大 n

根据需求选择合适的方法:推荐使用埃氏筛(方法二或三)作为通用解法,欧拉筛(方法四)在处理极大 n 时性能更优。

http://www.whsansanxincailiao.cn/news/30336060.html

相关文章:

  • 国内外优秀vi设计案例/seo网站培训优化怎么做
  • 键盘事件对网站交互/东莞网站营销策划
  • 濮阳做网站/女生做sem专员的工作难吗
  • 长沙正规seo优化公司/怎么seo关键词优化排名
  • 中小企业网站积木式搭建/搜索引擎地址
  • 网站建设主管招聘/项目推广网
  • 公众号开发者模式后自动回复/360搜索优化
  • 宁波网站建设科技有限公司/什么是指数基金
  • 股票跟单网站开发/合肥百度seo排名
  • 网站建设 海豚弯/网络营销客服主要做什么
  • 北京网站建设方案案例/建网站的详细步骤
  • 服饰网站建设 e-idea/大数据精准获客软件
  • 在网站上签失业保险怎样做/seo优化公司哪家好
  • 做ppt如何从网站插入视频/seo网站关键词优化方式
  • 广州企业网站建设报价/网络营销课程有哪些
  • 买车平台十大排名/企业网站seo托管怎么做
  • tomcat 打开wordpress/优化设计答案五年级下册
  • 开发建设网站需要什么人才/seo排名优化公司价格
  • 建设一个网站的过程/长沙seo代理商
  • 软件工程师多少钱一个月/郴州seo快速排名
  • 出口网站制作/360应用商店
  • 游戏的网站策划应该怎么做/免费二级域名分发网站
  • 建设网站技术公司电话/百度免费资源网站
  • 怎样做企业营销网站/桂林网页
  • 网站后台制作教程/公司网站建设北京
  • 做网站原型图软件/自学seo能找到工作吗
  • 长沙移动网站建设哪家好/网络营销属于哪个专业
  • 网站开发团队投入/公司百度推广一年多少钱
  • 设计需要了解的网站/怎样在百度上做广告
  • 在线真正免费定位的网站/网站访问量排行榜