PHP求最大奇约数和的方法示例-创新互联

今天小编给大家分享的是PHP求大奇约数和的方法示例,很多人都不太了解,今天小编为了让大家更加了解PHP求大奇约数和的方法,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

在龙山等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、成都网站建设 网站设计制作按需开发网站,公司网站建设,企业网站建设,高端网站设计,全网整合营销推广,外贸网站制作,龙山网站建设费用合理。

PHP求大奇约数和的方法示例

小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x大的奇数约数,x为正整数。 例如:f(44) = 11.

现在给出一个N,需要求出 f(1) + f(2) + f(3)…….f(N)

例如: N = 7

f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 + 1 + 3 + 1 + 5 + 3 + 7 = 21

小易计算这个问题遇到了困难,需要你来设计一个算法帮助他。

<?php
$num = trim(fgets(STDIN));

function jNum($num){
        $m = $num/2;
        $res = 1;
        if($num&0x1 == 1){//如果他本身就是个奇数,那么他的大奇约数就是他本身
                $res = $num;
                goto HELL;
        }
        for($i = 1; $i<=$m; $i=$i+2){//如果不是,那么就从1开始一直往上除,每次+2(奇数)
                if($num%$i==0){
                        $res = $i;
                }
        }
        HELL:
        return $res;
}

function jNum2($num)
{
        $res = 0;

        for($i=1;$i<=$num;$i++){
                if(($i&0x1) == 1){//如果他本身就是个奇数,那么他的大奇约数就是他本身
                        $res+=$i;
                }else{
                        $n = $i;
                        while(true){//优化,从大的数开始往下除
                                $n = $n>>1;
                                if(($n&0x1) == 1){
                                        $res+=$n;
                                        break;
                                }
                        }
                }
        }

        HELL:
        return $res;
}

function jNum3($num){//公式法
        if($num == 1){
                return 1;
        }
        if(($num&0x1) == 0){
                return jNum3($num>>1)+$num*$num/4;
        }else{
                return jNum3($num-1)+$num;
        }

}
//$sum = 0;
//for($i = 1; $i<=$num; $i++){
//      $sum+=jNum($i);
//}
//echo $sum;

//echo jNum2($num);

echo jNum3($num);

开始常规思路,一直调试的方法1,一直超时,改为方法2,还是超时,没有什么本质区别。

换思路。。

求sum(i)的过程中,如果i 为奇数可以直接求,就是 i 本身,即f(i) = i。

问题就是求所有f(i), i为偶数的和。

因为是大奇约数,所以f(2k) = f(k),所以f(2) + f(4) + … + f(2k) = f(1) + f(2) + … + f(k);

所以,数学归纳法,可以求出通用公式

PHP求大奇约数和的方法示例

这个做法还是不容易想到的。。。这么BT的题。。

以上就是PHP求大奇约数和方法的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注创新互联行业资讯频道哦!

分享标题:PHP求最大奇约数和的方法示例-创新互联
文章链接:https://www.cdcxhl.com/article8/jojip.html

成都网站建设公司_创新互联,为您提供品牌网站设计标签优化网站设计静态网站ChatGPT软件开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

微信小程序开发