PHP循环学习九:获取给定两数间的最大公因数
在上一篇文章中《PHP数组学习之返回给定两数间的全部公因数和最大公因数》,我们中我们介绍了一种获取两个整数的全部公因数,求最大公约数的方法。这次我们来再给大家介绍一种求最大公约数的方法,感兴趣的朋友可以学习了解一下~
上一篇文章中,我们是将两个整数的所有因数分别放在两个数组中,然后使用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); ?>
输出结果:
好了就说到这里了,有其他想知道的,可以点击这个哦。→ →php视频教程
推荐:《PHP面试题大汇总(收藏)》
以上是PHP循环学习九:获取给定两数间的最大公因数的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undress AI Tool
免费脱衣服图片

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

testthepdfinanotherapptoderineiftheissueiswiththefileoredge.2.enablethebuilt inpdfviewerbyTurningOff“ eflblyopenpenpenpenpenpdffilesexternally”和“ downloadpdffiles” inedgesettings.3.clearbrowsingdatainclorwearbrowsingdataincludingcookiesandcachedcachedfileresteroresoreloresorelorsolesoresolesoresolvereresoreorsolvereresoreolversorelesoresolvererverenn

VSCode中可通过快捷键快速切换面板与编辑区。要跳转至左侧资源管理器面板,使用Ctrl Shift E(Windows/Linux)或Cmd Shift E(Mac);返回编辑区可用Ctrl `或Esc或Ctrl 1~9。相比鼠标操作,键盘快捷键更高效且不打断编码节奏。其他技巧包括:Ctrl KCtrl E聚焦搜索框,F2重命名文件,Delete删除文件,Enter打开文件,方向键展开/收起文件夹。

使用os/exec包运行子进程,通过exec.Command创建命令但不立即执行;2.使用.Output()运行命令并捕获stdout,若退出码非零则返回exec.ExitError;3.使用.Start()非阻塞启动进程,结合.StdoutPipe()实时流式输出;4.通过.StdinPipe()向进程输入数据,写入后需关闭管道并调用.Wait()等待结束;5.必须处理exec.ExitError以获取失败命令的退出码和stderr,避免僵尸进程。

runthewindowsupdatetrubloubleshooterviaSettings>更新&安全> is esseShootsoAtomationfixCommonissues.2.ResetWindowSupDateComponentsByStoppingRealatedServices,RenamingTheSoftWaredWaredWaredSoftwaredSistribution andCatroot2Folders,intrestrestartingthertingthertingtherserviceSteStoceTocle

phparrayshandledatAcollectionsefefityIndexedorassociativuctures; hearecreatedWithArray()或[],访问decessedviakeys,modifybyAssignment,iteratifybyAssign,iteratedwithforeach,andManipulationUsfunsionsFunctionsLikeCountLikeCountLikeCountLikeCountLikecount()

Useinterfacestodefinecontractsforunrelatedclasses,ensuringtheyimplementspecificmethods;2.Useabstractclassestosharecommonlogicamongrelatedclasseswhileenforcinginheritance;3.Usetraitstoreuseutilitycodeacrossunrelatedclasseswithoutinheritance,promotingD

Restartyourrouterandcomputertoresolvetemporaryglitches.2.RuntheNetworkTroubleshooterviathesystemtraytoautomaticallyfixcommonissues.3.RenewtheIPaddressusingCommandPromptasadministratorbyrunningipconfig/release,ipconfig/renew,netshwinsockreset,andnetsh

breakexitstheloopimmediatelyafterfindingatarget,idealforstoppingatthefirstmatch.2.continueskipsthecurrentiteration,usefulforfilteringitemsliketemporaryfiles.3.gotojumpstoalabeledstatement,acceptableinrarecaseslikecleanuporerrorhandlingbutshouldbeused
