Другие языки программирования и технологии
Найти сумму квадратов всех чисел от 1 до n .
Паскаль. Найти сумму квадратов всех чисел от 1 до n . Нужно три способа через while ,repeat,for
Я бы так сделала (FreePascal, 1≤n≤3000000):
Как видно, формула для суммы квадратов на восьмибайтных знаковых целых числах типа int64 перестаёт корректно работать при n=1664511, а со всеми тремя циклами всё работает корректно и до трёх с небольшим миллионов - это потому что при двойном умножении n•(n+1)•(2n+1) для, например, n=2000000 получается слишком большое для типа int64 число. В Pascal ABC.NET есть специальный тип "больших целых", для которого такой проблемы вообще не возникает, так что всё таки циклы тут не нужны и учебные цели задания их использование тоже никак не оправдывают...
uses crt;
var m, n: longint;
s: int64;
begin
clrscr();
while true do
begin
write('n: ');
readln(n);
writeln('Σ(k=1;n)k² = ',
n * (n + 1) * (2 * n + 1) div 6);
if n < 1 then break;
s := 0;
m := 0;
while m < n do
begin
m := m + 1;
s := s + m * m;
end;
writeln('With While: ', s);
s := 0;
m := 0;
repeat
m := m + 1;
s := s + m * m
until m = n;
writeln('With Repeat: ', s);
s := 0;
for m := 1 to n do s := s + m * m;
writeln('With For: ', s);
writeln()
end;
end.
Счёт по формуле (только, естественно, не с идиотским /6 , а с нормальным div 6 - в первом случае получается вещественное число типа real, которым, например, девятнадцатизначные натуральные числа точно не выразить, а вещественный тип extended может ведь при таких операциях и не поддерживаться - тут всё зависит от диалекта Паскаля с конкретной системой программирования в придачу) и тремя циклами. А вот что у нас получается:
=n*(n+1)*(2*n+1)/6
И не нужны никакие циклы!
http://dev.mccme.ru/~merzon/pscache/bernoulli-elem-pre.html
И не нужны никакие циклы!
http://dev.mccme.ru/~merzon/pscache/bernoulli-elem-pre.html
Николай Рябов
он циклы проходит... а не математику сдаёт...
Похожие вопросы
- Помогите решить задачу на языке Паскаль. Найти сумму всех чётных чисел от 1 до 1000 (задачу решить 2 способами)
- Вам даны все целые числа от 1 до N + 1, кроме одного. Найдите отсутствующее число.
- <<ПОМОГИТЕ! НАПИСАТЬ ПРОГРАММУ НА СИ ИЛИ ПАСКАЛЕ КОТОРАЯ ВЫВОДИТЬ СУММУ ЦИФР ЧИСЛА ОТ 1 ДО N
- Вывести все числа от 1 до N, являющиеся палидромами
- Найти все такие простые числа, не превосходящие заданного N, двоичная запись которых представляет собой симметричную
- циклы с++ Дано натуральное N. Найти сумму всех цифр числа и вывести на экран все цифры в обратном порядке.
- дано целое число n,вывести все числа от 1 до n,и кол во этих чисел
- НА C# НАПИСАТЬ КОД Найти сумму целых отрицательных чисел, кратных 5 и принадлежащих интервалу [-20; 20].
- нужна помощь. найти сумму квадратов чётных элементов на языке ассемблер используя арифметические команды
- Как найти сумму цифр пятизначного числа в турбо паскаль? Помогите, пожалуйста!!!