首頁  >  文章  >  後端開發  >  區間內,N的倍數的值的和,演算法

區間內,N的倍數的值的和,演算法

WBOY
WBOY原創
2016-08-10 09:07:341413瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn