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

忻州建站公司济南黄河路桥建设集团官方网站

忻州建站公司,济南黄河路桥建设集团官方网站,网站建设都有什么工作要做,快速做网站哪家好判断一个数是否是质数(素数)是一个经典的算法问题。质数是指大于 1 的自然数,且只能被 1 和它本身整除的数。以下是几种常见的判断质数的算法及其优化。 1. 朴素算法 从 2 到 n-1 逐一检查是否能整除 n。如果能被整除,则 n 不是质…

判断一个数是否是质数(素数)是一个经典的算法问题。质数是指大于 1 的自然数,且只能被 1 和它本身整除的数。以下是几种常见的判断质数的算法及其优化。


1. 朴素算法

从 2 到 n-1 逐一检查是否能整除 n。如果能被整除,则 n 不是质数。

bool isPrime(int n) {if (n <= 1) return false; // 1 及以下的数不是质数for (int i = 2; i < n; i++) {if (n % i == 0) return false; // 如果能被整除,不是质数}return true; // 否则是质数
}

时间复杂度O(n)
缺点:效率低,尤其对于大数。


2. 优化:只检查到 √n

如果一个数 n 不是质数,那么它一定有一个因数小于或等于 √n。因此,只需要检查到 √n 即可。

bool isPrime(int n) {if (n <= 1) return false;for (int i = 2; i * i <= n; i++) { // 只需检查到 √nif (n % i == 0) return false;}return true;
}

时间复杂度O(√n)
优点:效率显著提高。


3. 进一步优化:跳过偶数

除了 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),但实际运行时间减半。


4. 进一步优化:6k ± 1 规则

所有质数(除了 2 和 3)都可以表示为 6k ± 1 的形式。因此,可以只检查形如 6k ± 1 的数。

bool isPrime(int n) {if (n <= 1) return false;if (n <= 3) return true; // 2 和 3 是质数if (n % 2 == 0 || n % 3 == 0) return false; // 排除 2 和 3 的倍数for (int i = 5; i * i <= n; i += 6) { // 只检查 6k ± 1 的数if (n % i == 0 || n % (i + 2) == 0) return false;}return true;
}

时间复杂度O(√n),但实际运行时间更少。


5. 素数筛法(适合批量判断)

如果需要判断多个数是否是质数,可以使用 埃拉托斯特尼筛法(Sieve of Eratosthenes)预处理。

#include <vector>
#include <cmath>vector<bool> sieve(int n) {vector<bool> isPrime(n + 1, 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;}}}return isPrime;
}bool isPrime(int n) {if (n <= 1) return false;vector<bool> primes = sieve(n);return primes[n];
}

时间复杂度O(n log log n)(预处理),O(1)(查询)。
优点:适合批量判断。


6. Miller-Rabin 素性测试(适合大数)

对于非常大的数(如 100 位以上的数),可以使用 Miller-Rabin 素性测试。这是一种概率算法,但可以通过多次测试将错误率降到极低。

#include <cstdlib>
#include <ctime>using ll = long long;ll power(ll a, ll d, ll n) {ll result = 1;a = a % n;while (d > 0) {if (d % 2 == 1) result = (result * a) % n;d = d >> 1;a = (a * a) % n;}return result;
}bool millerTest(ll d, ll n) {ll a = 2 + rand() % (n - 4);ll x = power(a, d, n);if (x == 1 || x == n - 1) return true;while (d != n - 1) {x = (x * x) % n;d *= 2;if (x == 1) return false;if (x == n - 1) return true;}return false;
}bool isPrime(ll n, int k = 5) {if (n <= 1 || n == 4) return false;if (n <= 3) return true;ll d = n - 1;while (d % 2 == 0) d /= 2;for (int i = 0; i < k; i++) {if (!millerTest(d, n)) return false;}return true;
}

时间复杂度O(k log³ n),其中 k 是测试次数。
优点:适合大数判断。


总结

  • 对于小范围数(如 n ≤ 10^6),使用 优化到 √n6k ± 1 规则 的算法即可。
  • 对于大范围数(如 n ≤ 10^12),可以使用 Miller-Rabin 素性测试
  • 如果需要批量判断,使用 埃拉托斯特尼筛法

文章转载自:

http://hYT7zyFb.gmmxh.cn
http://X5RCrSCs.gmmxh.cn
http://5FDHM52t.gmmxh.cn
http://HiJ6B0MP.gmmxh.cn
http://sIfQ9obb.gmmxh.cn
http://XCInv3DE.gmmxh.cn
http://ST7eX52d.gmmxh.cn
http://eH21rltz.gmmxh.cn
http://sF1KZllb.gmmxh.cn
http://DwGst8Wq.gmmxh.cn
http://HevlKjk2.gmmxh.cn
http://DgIGs2pt.gmmxh.cn
http://CN5fyvqd.gmmxh.cn
http://S42CifjO.gmmxh.cn
http://hO92uUqS.gmmxh.cn
http://lq7Sw03h.gmmxh.cn
http://hVuBUrI8.gmmxh.cn
http://idXSVYFr.gmmxh.cn
http://LB7UlbF3.gmmxh.cn
http://HOOZULgI.gmmxh.cn
http://KFsjHPzG.gmmxh.cn
http://gp7Zp9x9.gmmxh.cn
http://pwBhQWb1.gmmxh.cn
http://9VVxH4nK.gmmxh.cn
http://DRqh2gEK.gmmxh.cn
http://8riZ2mVv.gmmxh.cn
http://w1vJeSdd.gmmxh.cn
http://KuUds5Sb.gmmxh.cn
http://Z2vHMYzq.gmmxh.cn
http://o6WgyMZ0.gmmxh.cn
http://www.dtcms.com/wzjs/643534.html

相关文章:

  • ssh网站开发的书籍汕头建站模板源码
  • 保定网站免费制作网站内容建设与管理
  • 建设网站学什么条件汽车配件外贸出口公司
  • 购物网站哪个好心理学门户网站开发与实现
  • 班级网站怎样做装修案例分析
  • 可以做网络攻防的实验的网站网站升级的内容包括哪些
  • 常平建设局网站wordpress主题腾讯EDC
  • 上海内贸网站建设ps专门做兼职的网站
  • 宁阳网站定制巨量数据分析入口
  • 网站开发 学习步骤整站优化报价
  • 网站开发税收标准网站研发公司
  • 网址网站注册蓝色phpcms律师网站模板phpcms律师
  • 可视化课题组网站建设教程求职简历模板免费可编辑
  • 网站模板减肥wordpress怎么调用多语言
  • 织梦免费网站模块下载地址emlog转换wordpress
  • 最佳外贸建站平台wordpress管理插件
  • 外贸公司网站制作价格设计素材网站哪个好
  • 网站建设 镇江丹阳营销推广策略
  • 网站建设接外包流程图管理系统项目
  • 漯河网站建设哪家重庆企业网站开发服务器
  • 打开网上免费网站吗鞍山玉佛苑玉佛图片
  • 海天网站建设付费下载网站源码
  • 站长百科 wordpress下列软件属于网站开发工具的是
  • 免费企业网站程序深圳网站开发antnw
  • 网站建设在作用是什么什么是网络营销?网络营销的特点有哪些?
  • 比邻店网站开发深圳做企业网站的公
  • 营业执照 网站开发网站推广工具有
  • 成都网站备案太慢国外服务器域名需要备案吗
  • 自己做民宿在什么网站上投放网站自助建设平台
  • 以下属于网站seo的内容是淘宝店做箱包哪个网站拿货