Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
PHP函数怎样写一个判断是否为质数的函数 PHP函数质数判断的入门编写教程​_创想鸟

PHP函数怎样写一个判断是否为质数的函数 PHP函数质数判断的入门编写教程​

判断一个数是否为质数的核心是检查其是否仅能被1和自身整除,1. 使用基础函数时只需循环到sqrt($number)以减少计算量;2. 优化方法包括排除偶数并利用6k±1的形式跳过非质数;3. 对大数应采用miller-rabin等概率算法结合bcmath扩展提高效率;4. 生成质数数组可结合isprime函数逐个判断并存储,适用于需预生成质数列表的场景,该方法完整有效。

PHP函数怎样写一个判断是否为质数的函数 PHP函数质数判断的入门编写教程​

判断一个数是否为质数,核心在于检查它除了1和自身之外,是否还能被其他数整除。一个简单的PHP函数就能搞定这个任务。

function isPrime(int $number): bool {  if ($number <= 1) {    return false;  }  for ($i = 2; $i <= sqrt($number); $i++) {    if ($number % $i === 0) {      return false;    }  }  return true;}// 示例用法$num = 29;if (isPrime($num)) {  echo $num . " 是质数。";} else {  echo $num . " 不是质数。";}

PHP判断质数函数:如何提高效率?

首先,最直观的优化就是减少循环次数。没必要一直循环到

$number - 1

,只需要循环到

sqrt($number)

即可。 这是因为如果一个数有大于其平方根的因子,那么必然有一个小于其平方根的因子。 比如,判断100是不是质数,你只需要检查到10即可,因为如果存在大于10的因子,比如20,那必然存在一个小于10的因子,也就是5。

立即学习“PHP免费学习笔记(深入)”;

其次,可以排除偶数。 除了2以外,没有偶数是质数。 所以可以在函数一开始就排除偶数,然后循环的时候每次递增2。

function isPrimeOptimized(int $number): bool {  if ($number <= 1) {    return false;  }  if ($number <= 3) {    return true;  }  if ($number % 2 === 0 || $number % 3 === 0) {    return false;  }  for ($i = 5; $i * $i <= $number; $i = $i + 6) {    if ($number % $i === 0 || $number % ($i + 2) === 0) {      return false;    }  }  return true;}

这个优化后的版本,先排除了小于等于1的数,然后直接处理了2和3这两个特殊的质数。 接着,排除了所有能被2或3整除的数。 最后,循环只检查那些不太容易被小质数整除的数,步长为6。 为什么是6呢? 因为所有质数(大于3的)都可以表示成

6k ± 1

的形式。 这可以进一步减少计算量。

PHP质数判断:如何处理大数?

处理大数时,简单的循环判断可能效率非常低。 比如要判断一个15位的数字是不是质数,用前面的方法可能需要几秒甚至几分钟。 这时候,可以考虑使用一些更高级的算法,比如 Miller-Rabin 质数测试。

Miller-Rabin 是一种概率性算法,它不能保证100%准确,但可以通过多次测试来提高准确率。 它的基本思想是基于费马小定理和二次探测定理。

function millerRabin(int $n, int $k = 5): bool {    if ($n <= 1) return false;    if ($n <= 3) return true;    // 找到 (s, r) 使得 n - 1 = 2^s * r (r is odd)    $s = 0;    $r = $n - 1;    while ($r % 2 == 0) {        $s++;        $r /= 2;    }    // 进行 k 次测试    for ($i = 0; $i < $k; $i++) {        $a = rand(2, $n - 2);        $x = bcpowmod($a, $r, $n); // 使用 bcmath 扩展处理大数        if ($x == 1 || $x == $n - 1) continue;        for ($j = 0; $j < $s - 1; $j++) {            $x = bcpowmod($x, 2, $n);            if ($x == $n - 1) continue 2; // 继续外层循环        }        return false; // 不是质数    }    return true; // 有很大概率是质数}

注意,这个函数使用了

bcmath

扩展来处理大数运算,因为 PHP 的标准整数类型可能无法存储非常大的数字。

bcpowmod

函数就是

bcmath

扩展提供的,用于计算大数的幂模运算。

$k

参数控制测试的次数,增加测试次数可以提高准确率,但也会增加计算时间。

PHP质数判断:与数组结合的应用场景

假设你需要生成一个包含前 N 个质数的数组。 你可以结合

isPrime

函数来完成这个任务。

function generatePrimeArray(int $n): array {  $primes = [];  $number = 2;  while (count($primes) < $n) {    if (isPrime($number)) {      $primes[] = $number;    }    $number++;  }  return $primes;}// 示例$primeArray = generatePrimeArray(10);print_r($primeArray);

这个函数会从2开始,依次判断每个数字是否为质数,如果是,就添加到数组中,直到数组包含 N 个质数为止。 这在一些需要预先生成质数列表的场景下非常有用,比如密码学或者数论相关的应用。 当然,如果 N 很大,你可能需要考虑使用更高效的质数生成算法。

以上就是PHP函数怎样写一个判断是否为质数的函数 PHP函数质数判断的入门编写教程​的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1291409.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Symfony 如何把XML数据转为关联数组
上一篇 2025年12月11日 07:27:22
PHP命令怎样限制脚本使用的网络带宽 PHP命令带宽限制的设置教程
下一篇 2025年12月11日 07:27:29

相关推荐

  • VSCode怎样用调试启动参数自定义运行时环境变量 VSCode启动参数自定义环境变量的创新用法​

    vscode允许通过launch.json中的”env”属性直接设置环境变量,或使用”envfile”指定.env文件来加载变量。1. 直接在launch.json中定义”env”属性可为调试会话注入键值对形式的环境变量,适用于…

    2026年9月25日
    200
  • 【新手入门】使用ERNIE-4.5-0.3B-Paddle从原始文本构建知识图谱

    1. 概述 本文将探讨如何使用ernie-4.5-0.3b-paddle模型从原始文本构建知识图谱。通过结合大语言模型(llm)和检索增强生成(rag)技术实现文本生成,帮助我们从非结构化数据中高效提取实体和关系信息。 2. 什么是知识图谱? 2.1 基本概念 知识图谱是一种语义网络,它表示和连接现…

    2026年9月25日
    000
  • 为什么有些硬件参数在官方宣传中总是模糊不清?

    为什么有些硬件参数在官方宣传中总是模糊不清?为什么有些硬件参数在官方宣传中总是模糊不清?为什么有些硬件参数在官方宣传中总是模糊不清?为什么有些硬件参数在官方宣传中总是模糊不清?

    厂商模糊硬件参数主要出于制造差异、竞争策略和营销灵活性。半导体生产存在体质差异,通过“binning”分级后需用“最高可达”等表述覆盖全合格品,避免售后风险;同时防止竞争对手轻易获取技术细节,保持领先优势;还能为后续优化留空间,适应市场变化。此外,复杂参数不易被大众理解,模糊化有助于简化宣传。面对此…

    2026年9月25日 • 用户投稿
    200
  • 一加R系列微信收款语音播报怎么设置?快速启用支付提示功能

    一加R系列可通过系统辅助功能或第三方APP设置微信收款语音播报。首先检查手机系统更新并开启辅助功能中的语音提示,或下载高评分第三方APP授权通知权限实现播报。尽管微信自带功能较难支持,但可尝试开启到账声音提醒。为确保安全,选用正规渠道APP并注意权限管理。此外,佩戴智能手表、使用收款音箱等也能帮助及…

    2026年9月25日
    100
  • 如何配置磁盘配额限制用户存储空间?

    如何配置磁盘配额限制用户存储空间?如何配置磁盘配额限制用户存储空间?如何配置磁盘配额限制用户存储空间?如何配置磁盘配额限制用户存储空间?

    配置磁盘配额可防止资源滥用、保障系统稳定,核心步骤包括:启用文件系统配额功能,编辑/etc/fstab添加usrquota和grpquota选项,重新挂载文件系统,生成配额文件aquota.user和aquota.group,使用edquota设置用户或组的磁盘空间与文件数软硬限制,并通过quota…

    2026年9月25日 • 用户投稿
    000
  • 高分辨率传感器在摄像头中的实际效果取决于哪些因素?

    高分辨率传感器在摄像头中的实际效果取决于哪些因素?高分辨率传感器在摄像头中的实际效果取决于哪些因素?高分辨率传感器在摄像头中的实际效果取决于哪些因素?高分辨率传感器在摄像头中的实际效果取决于哪些因素?

    高分辨率传感器需配合优质镜头、先进算法和充足光线才能发挥优势,提升细节表现,但受限于传感器尺寸、动态范围及存储处理需求,并非在所有场景下都必要。 因赛AIGC 因赛AIGC解决营销全链路应用场景 73 查看详情 高分辨率传感器在摄像头中带来的效果并非单纯的像素数量增加,而是与镜头素质、图像处理算法、…

    2026年9月25日 • 用户投稿
    100
  • 为什么你的电脑总是有莫名其妙的噪音?

    噪音多因硬件异常或老化,先判别类型及时处理;风扇积尘、轴承损坏致嗡嗡或吱吱声,清灰或更换可解决;机械硬盘咔哒响或是损坏前兆,须立即备份数据;电源或主板劣质元件引发滋滋声,需检查质量;机箱松动或共振产生震动噪音,紧固螺丝可改善。 电脑出现莫名其妙的噪音,通常不是无缘无故的。这些声音往往来自硬件运行中的…

    2026年9月25日
    300
  • 抖音巨量千川账户余额怎么提现?抖音巨量千川的钱怎么退

    抖音巨量千川账户余额怎么提现?抖音巨量千川的钱怎么退抖音巨量千川账户余额怎么提现?抖音巨量千川的钱怎么退抖音巨量千川账户余额怎么提现?抖音巨量千川的钱怎么退抖音巨量千川账户余额怎么提现?抖音巨量千川的钱怎么退

    在当今这个短视频盛行的时代,抖音无疑成为了许多人展示才华、分享生活的舞台。而抖音旗下的巨量千川广告平台,更是让许多商家和创作者通过广告实现了商业变现。在使用巨量千川的过程中,如何提取账户余额成为了一个让人头疼的问题。今天,就让我来为大家详细解析一下抖音巨量千川账户余额提现的全过程,让你轻松提取,安全…

    2026年9月25日 • 用户投稿
    100
  • 主板 M.2 接口的散热设计是否必要?

    主板 M.2 接口的散热设计是否必要?主板 M.2 接口的散热设计是否必要?主板 M.2 接口的散热设计是否必要?主板 M.2 接口的散热设计是否必要?

    对于高性能NVMe SSD,M.2接口散热设计十分必要。其能有效防止高负载下的热节流现象,保障持续性能输出并延长硬盘寿命。尤其在使用PCIe Gen4及以上规格SSD进行大文件传输、游戏或专业工作时,主板自带或额外加装的散热片可显著降低温度。中低端主板附带的简易散热片效果有限,仅适合轻度使用;而中高…

    2026年9月25日 • 用户投稿
    100
  • Deepseek 满血版联合 Copy.ai Templates,套用优质文案框架​

    Deepseek 满血版联合 Copy.ai Templates,套用优质文案框架​Deepseek 满血版联合 Copy.ai Templates,套用优质文案框架​Deepseek 满血版联合 Copy.ai Templates,套用优质文案框架​Deepseek 满血版联合 Copy.ai Templates,套用优质文案框架​

    用 deepseek 满血版 + copy.ai 的模板能高效产出高质量文案;deepseek 擅长理解和生成内容,copy.ai 提供成熟模板,两者结合保障结构与创意;操作时先选 aida、pas、bab 等高频率模板,再将产品信息与模板一同输入 deepseek 生成初稿;使用时需调整模板灵活性…

    2026年9月25日 • 用户投稿
    100
  • 电脑要按f11才能进入系统怎么回事?电脑为什么按f11才进入系统

    电脑要按f11才能进入系统怎么回事?电脑为什么按f11才进入系统电脑要按f11才能进入系统怎么回事?电脑为什么按f11才进入系统电脑要按f11才能进入系统怎么回事?电脑为什么按f11才进入系统电脑要按f11才能进入系统怎么回事?电脑为什么按f11才进入系统

    最近有朋友向小编反映了一个关于电脑使用的问题:他的电脑在开机时无法直接进入系统,必须按下f11键后才能正常启动,对此感到十分困惑。接下来,小编就为大家解析一下为什么电脑需要按f11才能进入系统。 为何电脑需按F11才能进入系统? 这通常是由于BIOS中的启动设置出现偏差所致。例如,电脑本身并未配备软…

    2026年9月25日 • 用户投稿
    300
  • 小红书怎么查注册日期?小红书怎么查注册日期和时间

    小红书怎么查注册日期?小红书怎么查注册日期和时间小红书怎么查注册日期?小红书怎么查注册日期和时间小红书怎么查注册日期?小红书怎么查注册日期和时间小红书怎么查注册日期?小红书怎么查注册日期和时间

    随着社交媒体的不断发展,小红书已经成为了一个热门的分享平台。在这个平台上,我们可以发现各种有趣的内容,结交志同道合的朋友,甚至还能找到生活中的灵感。你是否好奇过自己是在什么时间注册的小红书呢?今天,就让我来带你了解一下,如何在小红书上查找注册日期。 一、登录小红书账号 当然是要确保你已经成功注册了小…

    2026年9月25日 • 用户投稿
    100
  • 为什么苹果手机副卡收不到短信

    为什么苹果手机副卡收不到短信为什么苹果手机副卡收不到短信为什么苹果手机副卡收不到短信为什么苹果手机副卡收不到短信

    苹果手机副卡无法收到短信的原因如下:副卡未激活iMessage 未启用蜂窝数据未打开短信中心设置不正确SIM 卡损坏网络拥塞运营商限制 为什么苹果手机副卡收不到短信? 苹果手机持有者在使用副卡时,可能会遇到收不到短信的问题。以下是一些常见原因: 1. 副卡未激活 检查您的副卡是否已激活。未激活的副卡…

    2026年9月25日 • 用户投稿
    100
  • 为什么有些硬件评测中的噪音数据与实际感受不符?

    为什么有些硬件评测中的噪音数据与实际感受不符?为什么有些硬件评测中的噪音数据与实际感受不符?为什么有些硬件评测中的噪音数据与实际感受不符?为什么有些硬件评测中的噪音数据与实际感受不符?

    噪音数据与实际感受不符因分贝值忽略频率分布、噪音类型、环境背景及主观差异,评测环境与真实场景不同,需综合考量测试方法与个体感知差异。 硬件评测中的噪音数据与实际感受不符,这很常见。原因在于,数据只是一个冰冷的数字,它无法完全捕捉人耳对噪音的感知复杂性,以及环境因素的影响。 数据是数据,感受是感受,两…

    2026年9月25日 • 用户投稿
    200
  • 为什么苹果手机锁屏了还会亮

    为什么苹果手机锁屏了还会亮为什么苹果手机锁屏了还会亮为什么苹果手机锁屏了还会亮为什么苹果手机锁屏了还会亮

    苹果手机锁屏后仍会亮起的原因包括:息屏显示、抬腕唤醒、轻点唤醒、附近设备解锁和背景应用刷新。为了防止这种情况,用户可以禁用以下功能:息屏显示、抬腕唤醒、轻点唤醒、附近设备解锁和背景应用刷新。 苹果手机锁屏后为什么仍然会亮? 苹果手机锁屏后仍然会亮通常是因为以下原因之一: 1. 息屏显示功能 息屏显示…

    2026年9月25日 • 用户投稿
    200
  • 为什么苹果手机拍出来的照片发黄

    为什么苹果手机拍出来的照片发黄为什么苹果手机拍出来的照片发黄为什么苹果手机拍出来的照片发黄为什么苹果手机拍出来的照片发黄

    苹果手机照片发黄的原因有硬件因素(镜头镀膜氧化、色温传感器偏差)、软件因素(图像增强算法、色温设置)、环境因素(灯光环境、曝光不足)等。可通过校准色温、使用自然光、手动调整设置、使用第三方相机应用、后期处理等办法解决。 苹果手机照片发黄的原因 一、硬件因素 镜头镀膜氧化:随着时间的推移,镜头镀膜会氧…

    2026年9月24日 • 用户投稿
    100
  • 为什么有些SSD参数漂亮但实际体验却令人失望?

    为什么有些SSD参数漂亮但实际体验却令人失望?为什么有些SSD参数漂亮但实际体验却令人失望?为什么有些SSD参数漂亮但实际体验却令人失望?为什么有些SSD参数漂亮但实际体验却令人失望?

    SSD实际体验不佳的核心在于纸面参数仅反映理想条件下的峰值性能,而真实使用中受主控、闪存类型、SLC缓存耗尽、DRAM缓存缺失、固件优化不足及散热不良等因素影响,导致持续写入速度骤降、系统卡顿等问题。 很多时候,我们看着SSD产品页面上那些漂亮的顺序读写速度,比如几千MB/s,或者惊人的IOPS,心…

    2026年9月24日 • 用户投稿
    100
  • VSCode 怎样通过快捷键快速折叠所有代码块 VSCode 快速折叠所有代码块的快捷键方法​

    在vscode中一键折叠所有代码的快捷键是ctrl + k后按ctrl + 0(mac为cmd + k再按cmd + 0),该操作可将函数、类、条件语句等所有可折叠区域全部收起,帮助快速概览文件结构、提升阅读与定位效率;此外,还可使用ctrl + shift + [折叠当前代码块、ctrl + k,…

    2026年9月24日
    100
  • 抖音店铺层级从低到高怎么设置?抖音怎么创建店铺位置

    抖音电商逐渐崛起,成为众多商家争相入驻的舞台。抖音店铺层级设置作为商家在抖音平台上的重要环节,直接影响着店铺的运营效果和品牌形象。本文将从低到高详细解析抖音店铺层级设置,帮助商家打造优质电商品牌。 一、抖音店铺层级概述 抖音店铺层级分为五个等级,从低到高依次为:新手店铺、成长店铺、成熟店铺、优质店铺…

    2026年9月24日
    1300
  • 散热系统的设计如何影响高端硬件的长期稳定性?

    散热系统的设计如何影响高端硬件的长期稳定性?散热系统的设计如何影响高端硬件的长期稳定性?散热系统的设计如何影响高端硬件的长期稳定性?散热系统的设计如何影响高端硬件的长期稳定性?

    散热系统设计直接决定高端硬件的长期稳定性,优良设计可有效控制温度、抑制热点、减少热应力损伤,从而延缓性能衰减、提升可靠性;反之则加速老化、引发故障。高性能计算因持续高负载对散热更敏感,要求温度稳定以保障运算精度与连续性。液体冷却凭借高效导热和低噪优势成为高端配置主流,但存在成本高、复杂性强及漏液风险…

    2026年9月24日 • 用户投稿
    1100

发表回复

登录后才能评论
关注微信