Rumah  >  Artikel  >  pembangunan bahagian belakang  >  区间内,N的倍数的值的和,算法

区间内,N的倍数的值的和,算法

WBOY
WBOYasal
2016-08-10 09:07:341411semak imbas

例:求10-50之间的是7的倍数的值的和.有特殊奖励
经常在学PHP的时候总会遇到一些题.什么水仙花啊,什么素数的和之类的.今天我看到某个网站上的这道题,对于这道题的答案,基本都是以下这个函数.

<code>function newSumMultiple($min,$max,$multiple){
    $sum = 0;
    for(;$min</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</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 得到上下界然后用等差数列求和公式

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn