当前位置 博文首页 > 文章内容

    PHP数组学习之返回给定两数间的全部公因数和最大公因数

    作者:shunshunshun18 栏目:未分类 时间:2021-08-16 10:44:06

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    在之前的文章《》中,我们介绍了PHP关联数组中更改数组键名或者键值大小写的方法。这次我们看看如何获取两个整数的所有公因数,并求最大公因(约)数,感兴趣的朋友可以学习了解一下~

    首先我们来了解一下什么是公因(约)数和最大公因(约)数

    因(约)数是指能整除一个整数的数,公因(约)数则是能同时整除几个整数的数。而能同时整除几个整数的 公约数 可以有多个,其中最大的那个就是最大公因数。

    例如:数30和40,它们的公因数有1、2、5、10;其中10最大,因此数30和40的最大公因数为10。

    那么我们怎么使用PHP来获取两个整数a和b间的公因数和最大公因数呢?

    思路:

    1、分别获取两个整数a和b间因数(这个在上文中有详细介绍),然后将这些因数分别存到一个数组中。这里以数30为例,使用for循环求所有因数:

    for($i=1;$i<30;$i++){
        if($a%$i==0){//分解因数
            $arr1[]=$i;
        }
    }

    输出这个数组$arr1

    var_dump($arr1);

    看看结果:

    1.png

    可以看出数30的因数有:1、2、3、5、6、10、15。

    利用上述的方法我们再获取数40的所有因数,将它们存到一个数组$arr2中:

    2.png

    可以看出数40的因数有:1、2、4、5、8、10、20。

    2、两个整数的所有因数都获取了,就可以使用array_intersect()函数来求它们间的所有公因数了。(array_intersect()函数可以计算两个数组的交集,不懂可以阅读《》)。

    $result=array_intersect($arr1,$arr2);
    var_dump($result);

    输出结果为:

    3.png

    这样就可以得出数30和40的所有公因数:1、2、5、10。

    3、30和40的所有公因数都在交集数组$result中,我们就可以使用max()函数来获取数组中最大的那个数,即最大公因数。

    $max=max($result);
    echo "最大公因数为: $max";

    输出结果为:

    4.png

    OK,完成!将上面的代码封装在一个函数里面:

    <?php
    header("Content-type:text/html;charset=utf-8");
    function gcd($a,$b){
    $arr1=array();
    $arr2=array();
    for($i=1;$i<$a;$i++){
        if($a%$i==0){//分解因数
            $arr1[]=$i;
        }
    }
    for($i=1;$i<$b;$i++){
        if($b%$i==0){//分解因数
            $arr2[]=$i;
        }
    }
    
    $result=array_intersect($arr1,$arr2);
    echo "数 $a 和 $b 的公因(约)数有:";
    foreach($result as $value){
    	echo $value." , ";
    }
    
    $max=max($result);
    echo "<br>最大公因数为: $max  <br><br>";
    }
    gcd(30,40);
    gcd(12,16);
    ?>

    输出结果:

    5.png

    好了就说到这里了,有其他想知道的,可以点击这个哦。→ →

    最后给大家推荐一个PHP数组的免费视频教程:,快来学习吧!