例:求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 得到上下界再用等差數列求和公式