PHP中如何用判断循环的方式获取最大公因数
Admin 2022-08-27 群英技术资讯 588 次浏览
我们是将两个整数的所有因数分别放在两个数组中,然后使用array_intersect()函数求这两个数组的交集,就可得到一个包含全部公因数的数组;再使用max()函数计算交集数组中最大数,就获取最大公因数。
是不是有点麻烦,还要先一个个求出所有因数,然后计算出所有公因数,最后才能求出最大公约数。下面介绍一个简单通用的方法(可以用在其他语言中)。
这次我们不使用PHP内置函数,就利用if判断语句和while循环语句来求给定两个整数间的最大公约数。
实现步骤:有两个变量a,b
第一步:要确保大数放a中、小数放b中。
这就需要使用if语句来判断,如果 a < b,就定义一个中间变量temp,实现 a与b值的交换
if ($a < $b) { //a < b,则交换两个数 $temp = $a; $a = $b; $b = $temp; }
第二步:求 a/b
的余数,值赋给 r
$r = $a % $b;
第三步:判断 余数r 是否为0。
如果 r=0
,则上面的b就是最大公约数;如果 r!=0
,就需要把b的值赋给a,r的值赋给b,继续求 a/b 的余数,判断 余数r 是否为0。这就需要利用到循环(这里使用while循环):
while ($r != 0) { $a = $b; $b = $r; $r = $a % $b; }
第四步:就是输出最大公因数b。
下面看看实现代码:
<?php header("Content-type:text/html;charset=utf-8"); function gcd($a, $b) { $a1 = $a; $b1 = $b; if ($a < $b)//a < b,则交换两个数 { $temp = $a; $a = $b; $b = $temp; } $r = $a % $b; while ($r != 0) { $a = $b; $b = $r; $r = $a % $b; } echo "数$a1 和$b1 的最大公因数为: $b <br><br>"; } gcd(30, 40); gcd(12, 16); gcd(15, 12); ?>
输出结果:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
swoole的UDP服务器与TCP服务器不同,UDP没有连接的概念。Http服务器只需要关注请求响应即可,所以只需要监听一个onRequest事件。WebSocket服务器是建立在Http服务器之上的长连接服务器。
字符串的操作在PHP开发中是很基础的,而它的功能强大,是我们所不能想象的,小编今天就为大家总结PHP开发中字符串的函数实现,希望能为你带来便利。
在本篇文章里小编给大家分享的是一篇关于php7 没有phpize的解决方法及相关问题总结,有需要的朋友们可以跟着学习下。
今天本文的主题是如何通过PHP来判断一组数据是不是等比数列?对于PHP小白来说可能略有难度,但是相信大家阅读完本文,就对此类问题,了如指掌了。
php中swoft框架配置环境:1、将swoft的官方项目在docker中运行起来,然后使用composer安装好它的依赖包。2、设置宿主机与容器共享文件,注意共享的前提是docker容器中的文件地址应该和宿主机对应的文件是一样的。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008