21.05.2008, 20:20
общий
это ответ
<i>Здравствуйте, <b>Артемий Тотктонада</b>!</i>
Для нахождения данной суммы нет необходимости перебирать все положительные числа, меньших 100 (1..100).
В приложении находится пример с двумя вариантами нахождения суммы, оба без полного перебора всех 100 чисел.
Первый вариант заключается в переборе и сложении всех чисел кратных 7 из диапазона 7..100.
Поясняю второй вариант более детально:
Сумма всех положительных чисел, кратных 7, меньших 100 равно:
<code>7 + 14 + 21 + ... + 98</code>
что, в свою очередь, равно
<code>(1 + 2 + 3 + ... + 14)*7</code>
Как видите, в скобках находится арифметическая прогрессия от 1 до 14 с шагом 1. Если подставить формулу нахождения суммы арифметической прогрессии, то получаем:
<code>7*(1+14)*14/2</code>
Если разделить 100 на 7, отбросив при этом дробную часть, то получим количество чисел, кратных семи, т.е. 14.
<code>i:= 100 div 7;
summ:= 7*(1+i)*i <b>div</b> 2;</code>
Таким образом и получена формула суммы всех чисел, кратных семи.
<em>Удачи!</em>
Приложение:
program q137701;uses Crt;var i, summ: Integer;begin {Очистка экрана} ClrScr; {######Вариант 1 ######} i:= 7; summ:= 0; while (i < 100) do begin {Прибавляем к сумме i} Inc(summ, i); {Увеличиваем i на 7} {Т.е. переходим к следующему числу, кратному 7} Inc(i, 7); end; {Выводим результат} writeln(‘summ = ‘, summ); {###### Вариант 2 ######} {Находим количество чисел, кратных 7} i:= 100 div 7; {Находим сумму с помощью функции арифметической прогрессии} summ:= (1+i)*i*7 div 2; {Выводим результат} writeln(‘summ = ‘, summ); {Даем пользователю возможность насладиться результатом} writeln; write(‘Press any key...‘); readln;end.