jquery教程

推荐列表 站点导航

当前位置:首页 > jquery > jquery教程 >

使用PHP求最大奇约数的和

来源:网络整理  作者:fen  发布时间:2020-12-25 10:36
jquery中文网为您提供使用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) $numIT之家$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);

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

1.png

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

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jq/jc/8869.shtml

相关文章
最新文章
PHP识别相片是否是颠倒的 PHP识别相片是否是颠倒的

时间:2020-12-28

python编程有哪些ide python编程有哪些ide

时间:2020-12-28

python开发工程师是做什么 python开发工程师是做什么

时间:2020-12-28

php构造函数的作用 php构造函数的作用

时间:2020-12-28

php怎么跟数据库连接 php怎么跟数据库连接

时间:2020-12-28

php实现顺序线性表 php实现顺序线性表

时间:2020-12-28

Python多重继承中的菱形继 Python多重继承中的菱形继

时间:2020-12-28

php中break的作用 php中break的作用

时间:2020-12-28

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

使用PHP求最大奇约数的和

2020-12-25 编辑:fen

本篇文章介绍一下使用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) $numIT之家$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);

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

1.png

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

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jq/jc/8869.shtml

相关文章

风云图片

推荐阅读

返回jquery教程频道首页