2015-06-16 2 views
2

Я попытался подвести все четные числа от 0 до 200, и я нашел 2 возможных способа работы, однако третий метод (самый эффективный) дает мне головную боль. Вот что я сделал до сих пор:PHP суммировать все EVEN номера от 0 до 200

Первый метод:

$total = 0; 
$number = 0; 

while ($number < 200) 
{ 
    if ($number % 2 == 0) 
    { 
     $total = $total + $number; 
    } 
    $number++; 
} 

echo $total; 

Второй метод:

$total = 0; 
    for($number = 0; $number < 200; $number+=2) 
    { 
     $total += $number; 
    } 
echo $total; 

Третий способ (не могу заставить его работать)

echo array_sum(range(1,200,2)); 

Как должен ли я изменить свой последний метод, чтобы он работал по назначению?

Редактировать: Кажется, что ни один из методов не работает: выход должен быть 10100, но для первых двух методов - 9900, а для третьего - 10000.

+0

Какой выход/ошибка третьего способа? – Gunaseelan

+0

Третий метод выводит 10000 в отличие от 9900 (правильный ответ). Отредактировано сообщение. –

ответ

2

Вы должны использовать

echo array_sum(range(0,198,2)); 

или

echo array_sum(range(0,199,2)); 

Это потому, что выше функция будет суммировать значения UPTO 200 в то время как в пределах своего while и for цикл будет рассчитывать ДО 198 только как вы конкретно определены

$number < 200 
+0

Действительно, и я должен написать $ number <= 200. Большое спасибо. Я приму ответ, как только смогу. –

+0

@MateiPanchios Рад помочь. –

2

начинается с 0, но 1

echo array_sum(range(0,200,2)); 

результат 10100

+1

Нет, выход действительно правильный, это 10100.Кажется, что первые два метода не работают, отредактировал мой вопрос, чтобы указать на это. Выход 9900 и кажется, что он должен быть 10100. –

+1

@MateiPanchios, поэтому я тоже опубликовал вывод –

1

В двух методах, которые вы пробовали, у вас есть условие, что число не должно превышать более чем 200. Я также использовал тот же сценарий, Вот.

echo array_sum(range(0,199,2)); 

дает ожидаемый результат 9900.

Но Правильный ответ 10100.

Чтобы получить 10100, мы должны заменить 199 с 200.

Формула (Математически)

2 + 4 + 6 + 8 + 10 + .............. + 198 + 200 = 2 (1 + 2 + 3 + 4 + 5 + ... .. + 100)

= 2 ((100 * 101)/2) (Формула: n (n + 1)/2; п последнее слагаемое)

= 100 * 101

= 10100