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

扬州百度seoseo优化销售

扬州百度seo,seo优化销售,网站seo主要是做什么的,数字展厅公司排名判断质数(素数)及其优化方法 质数是指 大于1的自然数,且 只有1和它本身两个正约数。以下是几种判断方法及其优化策略。 目录 基础方法(试除法)优化1:仅检查到√n优化2:跳过偶数优化3&#xff…

判断质数(素数)及其优化方法

质数是指 大于1的自然数,且 只有1和它本身两个正约数。以下是几种判断方法及其优化策略。


目录

  1. 基础方法(试除法)
  2. 优化1:仅检查到√n
  3. 优化2:跳过偶数
  4. 优化3:6k±1法则
  5. 优化4:筛法预处理
  6. 方法对比总结

基础方法(试除法)

检查从 2n-1 的所有整数,若存在能整除 n 的数,则 n 不是质数。

代码实现

bool isPrime(int n) {if (n <= 1) return false;for (int i = 2; i < n; i++) {if (n % i == 0) return false;}return true;
}

最简单直接的方法,时间复杂度:O(n),仅适用于学习,实际效率低

优化1:仅检查到√n

数学原理
若n不是质数,则必有一个因数≤√n

bool isPrimeSqrt(int n) {if (n <= 1) return false;for (int i = 2; i * i <= n; i++) {if (n % i == 0) return false;}return true;
}

时间复杂度:O(√n),最常用的单次判断方法

优化2:跳过偶数

除了 2,所有偶数都不是质数,因此可以跳过所有偶数。

bool isPrime(int n) {if (n <= 1) return false;if (n == 2) return true;      // 2 是质数if (n % 2 == 0) return false; // 排除所有偶数for (int i = 3; i * i <= n; i += 2) { // 只检查奇数if (n % i == 0) {return false;}}return true;
}

时间复杂度:O(√n/2)

方法4:6k±1法则(高级优化)

bool isPrime(int n) {if (n <= 1) return false;if (n <= 3) return true;if (n % 2 == 0 || n % 3 == 0) return false;for (int i = 5; i * i <= n; i += 6) {if (n % i == 0 || n % (i + 2) == 0) return false;}return true;
}

基于数学定理:质数呈6k±1分布,时间复杂度:O(√n/3),最高效的单次判断方法

方法5:筛法预处理(适合多次查询)

#include <vector>
using namespace std;vector<bool> sieve(int max_num) 
{vector<bool> is_prime(max_num + 1, true);is_prime[0] = is_prime[1] = false;for (int i = 2; i * i <= max_num; i++)  {if (is_prime[i]) {for (int j = i * i; j <= max_num; j += i) //i如果是质数,那么i*i就肯定不是质数{is_prime[j] = false;}}}return is_prime;
}int main() {int max_num = 100;vector<bool> is_prime = sieve(max_num); //调用sieve得到一个标记了质数的数组,可以用O(1)的时间复杂度判断一个数是否为质数int num = 17;cout << num << (is_prime[num] ? " 是质数" : " 不是质数") << endl;return 0;
}

筛法中为什么要标记i*i而不是i*2或者i*3

关键推论:当处理到质数i时:i*2, i*3,..., i*(i-1)都已被更小的质数标记过(避免重复标记)

举例说明:

以n=30为例,标记过程对比:
从i*i开始的标记顺序:
i=2: 4,6,8,10,12,14,16,18,20,22,24,26,28,30
i=3: 9,15,21,27
i=5: 25
(共标记14次)

从i*2开始的标记顺序:
i=2: 4,6,8,…,30
i=3: 6,9,12,…,30(其中6,12,18…已标记)
i=5: 10,15,20,25,30(其中10,15,20,30已标记)
(共标记25次,其中11次是重复的)

当n=1,000,000时:
优化版:约执行800,000次标记
非优化版:约执行1,500,000次标记
(节省近50%的操作)


文章转载自:

http://mT60t46P.fbfnk.cn
http://NwdR5vUz.fbfnk.cn
http://SbWgTQpx.fbfnk.cn
http://HcLSwa91.fbfnk.cn
http://2U8p0Dv7.fbfnk.cn
http://Ss8PO4P1.fbfnk.cn
http://9SkiCLgE.fbfnk.cn
http://JUQF1Rz7.fbfnk.cn
http://p8ZHRYrH.fbfnk.cn
http://DbD1z4Xs.fbfnk.cn
http://cLbOLTzv.fbfnk.cn
http://dVRDe4Kv.fbfnk.cn
http://UYhhqZqt.fbfnk.cn
http://Xfcm2foi.fbfnk.cn
http://92mVRrQD.fbfnk.cn
http://sAQaShIy.fbfnk.cn
http://bXrHxnXq.fbfnk.cn
http://4bwo3Zib.fbfnk.cn
http://dAvRvnXE.fbfnk.cn
http://GAGVaahB.fbfnk.cn
http://Ih1DqluR.fbfnk.cn
http://CUKJJ6AC.fbfnk.cn
http://DMuB5slf.fbfnk.cn
http://Wa8r4WzM.fbfnk.cn
http://odQB41BU.fbfnk.cn
http://6UJzYVnr.fbfnk.cn
http://ykE57vNe.fbfnk.cn
http://LUAwEMRS.fbfnk.cn
http://R3fEMsRK.fbfnk.cn
http://BR5xol6l.fbfnk.cn
http://www.dtcms.com/wzjs/696757.html

相关文章:

  • 外链网站推荐区块链软件开发
  • 怎么做网站网站赚钱网站问卷调查怎么做
  • 大连个人网站建设wordpress mysql备份
  • 百度的网站网址天津高端品牌网站建设
  • 做什么网站开发好网页制作模板的淘宝网站代码
  • 汉高建设公司网站背投广告典型网站
  • 微信订阅号做微网站微信小程序开发工具教程
  • 做网站的那些个人工作室国有平台公司是什么意思
  • 网站制作的内容包含建筑品牌网站
  • 怎么做网站加载动画网页布局有哪些
  • 广汉移动网站建设关键词排名优化怎么做
  • 找个可以直接看的网站seo广告平台
  • 网站开发需求清单万网 成品网站
  • 网站运营培训学校综合管理平台系统
  • 石家庄网站优化500个企点qq大概多少钱
  • 数码产品销售网站建设策划书广告传媒公司的网站应该怎么做
  • 柳州建站公司淄博晨曦网站建设
  • 台州seo网站建设费用做货代在哪些网站能找到客户
  • 做网站界面教育培训班
  • 做棋牌网站违法吗网站框架指的是什么
  • 网站开发怎么自学重庆市城乡建设施工安全管理总站网站
  • 学校网站 cmswordpress编辑媒体永久链接
  • 网络 企业网站wordpress 活动插件
  • 吉林市建设厅网站可以做问答的网站
  • 商城网站备案外链论坛
  • 营销型网站的现状网络营销师报名入口
  • 集团网站品牌建设特点wordpress 插件更新
  • 网站开发的工作经验要求网站建设与网络编辑综合实训课程指导手册pdf
  • 网站是否wordpress网站 app开发 财务做帐
  • 沧州兼职网站建设项目管理软件手机版