例:求10-50之间的是7的倍数的值的和.有特殊奖励
经常在学php的时候总会遇到一些题.什么水仙花啊,什么素数的和之类的.今天我看到某个网站上的这道题,对于这道题的答案,基本都是以下这个函数.
<code>function newSumMultiple($min,$max,$multiple){
$sum = 0;
for(;$min<$max;++$min){
if(!($min % $multiple)){
$sum += $min;
}
}
return $sum;
}</code>今天我突发奇想,一直都是这样子,老师教的时候都是照本宣科,真的是无语.于是我就想了以下这种思路.
<code>function sumMultiple($min,$max,$multiple){
$remainder=$min % $multiple;
if($remainder){
$remainder = $min + $remainder + 1;
$min = $remainder;
}else{
$remainder = $min;
}
$sum = 0;
while(true){
$sum += $remainder;
$min += $multiple;
if($min >= $max){
break;
}
$remainder = $remainder + $multiple;
}
return $sum;
}</code>求一个新的算法,最好附上代码.
例:求10-50之间的是7的倍数的值的和.有特殊奖励
经常在学php的时候总会遇到一些题.什么水仙花啊,什么素数的和之类的.今天我看到某个网站上的这道题,对于这道题的答案,基本都是以下这个函数.
<code>function newSumMultiple($min,$max,$multiple){
$sum = 0;
for(;$min<$max;++$min){
if(!($min % $multiple)){
$sum += $min;
}
}
return $sum;
}</code>今天我突发奇想,一直都是这样子,老师教的时候都是照本宣科,真的是无语.于是我就想了以下这种思路.
<code>function sumMultiple($min,$max,$multiple){
$remainder=$min % $multiple;
if($remainder){
$remainder = $min + $remainder + 1;
$min = $remainder;
}else{
$remainder = $min;
}
$sum = 0;
while(true){
$sum += $remainder;
$min += $multiple;
if($min >= $max){
break;
}
$remainder = $remainder + $multiple;
}
return $sum;
}</code>求一个新的算法,最好附上代码.
用 min, max 分别整除 multiple 得到上下界然后用等差数列求和公式
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号