Как вывести сумму нечетных чисел циклом от 11 до 30 do-while на PHP

335
20 ноября 2017, 21:19

Как вывести сумму нечетных чисел циклом от 11 до 30 do-while на PHP

Answer 1

Так как мы начинаем с нечётного, можно идти с шагом 2:

$sum = 0;
$cur = 11;
// if ($cur % 2 === 0) $cur++;
do {
  $sum += $cur;
} while (($cur += 2) < 30);
echo $sum; 

Однако, скорее всего, от вас ждут проверки в теле цикла:

$sum = 0;
$cur = 11;
do {
  if ($cur % 2 === 1) {
    $sum += $cur;
  }
} while (++$cur < 30);
echo $sum;  

Если говорить о чисто арифметическом решении, нужно вспомнить, что сумма n нечётных чисел есть n2.
Стало быть сумма нечётных от i до k = k2 - (i-1)2

function sum_odd($a, $b) {
    // приходится нормализовать входные данные(получить номера нечётных)
    $a = floor($a/2);
    $b = floor(($b+1)/2);
    return $b*$b - $a*$a;
}
echo sum_odd(11, 29), "\n"; // 200
echo sum_odd(11, 30), "\n"; // 200
echo sum_odd(10, 30), "\n"; // 200
echo sum_odd(10, 29), "\n"; // 200
READ ALSO
Как поправить кодировку?

Как поправить кодировку?

Делаю проверку на палиндром, но с русскими символами, что то не такПочему кодировка кривая? Кто то подскажет ?

250
Система личных сообщений

Система личных сообщений

Учусь делать самую простую систему сообщений, между двумя пользователями, где на сообщение можно ответить только 1 раз и это сообщение и ответ,...

217
RedBeanPHP. Почему создает две записи Many to many?

RedBeanPHP. Почему создает две записи Many to many?

Код из документацииПочему при создании связей Many to many создается 2 записи? Не могу сделать взять между USER и NEWS хочу сделать общий comments между...

179
Как вывести одну русскую букву в массиве $text[1]?

Как вывести одну русскую букву в массиве $text[1]?

Если вывести весь массив то все ок, а 1 символ то получаю кракозябруКак исправить? И почему так происходит

235