За последние 24 часа нас посетили 22588 программистов и 1277 роботов. Сейчас ищут 757 программистов ...

Сумма чисел от N до N

Тема в разделе "Решения, алгоритмы", создана пользователем Adil, 17 фев 2008.

  1. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    Вот этот скрипт считывает сумму чисел от 0 до 100
    PHP:
    1. <?
    2.    $min=0;
    3.    $max=100;
    4.    $s=range($min,$max);
    5.  
    6.     for ($i=$min; $i<=$max; $i++){
    7.         print "<br>";
    8.         print $min+=$s[$i];
    9.     }
    10. ?>
    и в итоге выдает правильный результат: 5050

    То же самое считываю по формуле: (100+1)*100/2, но как мне считать сумму чисел не с нуля, а допустим например с 30 ?
     
  2. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Наверно так:
    PHP:
    1.    
    2. $min=30;
    3. $max=100;
    4. $s=0;
    5. for ($i=$min; $i<=$max; $i++){
    6.   $s+=$i;
    7.   print "<br>";
    8.   print $s;
    9. }
    10.  
     
  3. sword dancer

    sword dancer Активный пользователь

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
    нужно из суммы чисел от 0 до 100 вычесть сумму чисел от 0 до 29
     
  4. Штаны

    Штаны Guest

    Тоже по формуле, но учитывая разность:
    Сумма= (max+1)*max/2-(min)*(min-1)/2
     
  5. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Элегантно, но не очень производительно:
    PHP:
    1. <? echo array_sum(range(0, 100)); ?>
    Математически:
    PHP:
    1. <?
    2.  
    3. $start = 0;
    4. $stop = 100;
    5. // Сумма арифметической прогрессии
    6. $sum = ($start + $stop) / 2 * ($start - $stop + 1);
    7.  
    8. ?>
     
  6. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    Спасибо большое. То что нужно было. Блин просто сутки не спал, поэтому не дошло сразу... эх не спать вредно...

    За этот пример тоже спасибо. Весьма оригинально... как говорится все гениальное просто...
     
  7. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Сумма арифметической прогрессии:
    Sn = ((a1 + an) / 2) * n
    Где Sn - сумма n членов
    a1 - первый член прогрессии
    an - n-ый член прогрессии
    n - номер члена прогрессии

    :) Чуток опоздал, но все же )
     
  8. Adil

    Adil Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    Спасибо... но потом до меня это само дошло... =)

    (30+100)*70/2 - выдавал неправильный результат... только после удара головой я понял, что чисел было не 70, а 71...