Страница 1 из 1
Программа для возведения натурального числа в степень
Добавлено:
04.10.2008 23:42:25
fs444
Есть задание: написать программу для возведения натурального числа в степень.
Я не понимаю смысла закономерности
n2(n в квадрате)=1+3+5+7+9+...+2n-1
Что должно быть вместо троеточия?
Re: Программа для возведения натурального числа в степе
Добавлено:
05.10.2008 00:01:26
B4rr4cuda
5^2=1+3+5+7+9 //9=2*5-1
6^2=1+3+5+7+9+11 //11=2*6-1
и тд
Вместо троеточия некая сумма чисел.
Можно использовать такой алгоритм: вычисляешь последнее число (n*2-1) и отнимаешь по двойке пока не дойдешь до единицы и, складывая полученные числа, получаешь результат возведения в квадрат.
Re: Программа для возведения натурального числа в степе
Добавлено:
05.10.2008 01:24:08
fs444
B4rr4cuda, спасибо
Добавлено спустя 13 часов 34 минуты 45 секунд:Re: Программа для возведения натурального числа в степеньЯ сделал так
- Код: Выделить всё
Program n2_sostavit_programmu_vozvedenia_naturalnogo_chisla_v_kvadrat;
Var i,n,s:LongInt;
Begin
Writeln('Введите натуральное число');
Readln(n);
s:=0;
For i:=1 To n Do Begin
s:=s+(2*i-1);
End;
Writeln('n = ',n,'; n^2 = ',s);
Readln;
End.
Что скажете?
Re: Программа для возведения натурального числа в степе
Добавлено:
05.10.2008 23:46:16
B4rr4cuda
Все верно. =)
Мой вариант:
- Код: Выделить всё
var s,n,k:integer;
begin
Writeln('Введите натуральное число');
Readln(n);
s:=0;
k:=n*2-1;
while k>=1 do
begin
s:=s+k;
k:=k-2;
end;
Writeln('n = ',n,'; n^2 = ',s);
Readln;
end.
Re: Программа для возведения натурального числа в степе
Добавлено:
06.10.2008 10:44:54
shade
А мой алгоритм такой
- Код: Выделить всё
function pow(a, n: Integer): Integer;
begin
Result := 1;
while n > 0 do
begin
Result := Result * Result;
if (n mod 2) <> 0 then Result := Result * a;
n := n div 2;
end;
end;
var
a, n: Integer;
begin
readln(a, n);
writeln( pow(a, n) );
end.
Сложность: O( ln(n) )
PS: возводимое число может быть и вещественным
Re: Программа для возведения натурального числа в степе
Добавлено:
06.10.2008 22:39:03
fs444
В книжке, откуда я эту задачку взял, до этого места рассматривались только операторы if и for. Про все остальное ни слова еще не было, поэтому я больше ничего и не использовал
shade, а почему в твоей программе надо вводить два числа - a и n? Я считал, что программе нужно знать только одно - какое число в квадрат возводить. И приведи полный код программы, а то мне паскаль на Result указывает "Unknown Identifier".
Re: Программа для возведения натурального числа в степе
Добавлено:
08.10.2008 15:27:21
Михаил Крамер
fs444, shade привёл вам прогу возведения любого целого числа в любую натуральную степень. А ошибка при компиляции у вас возникает из-за того, что он использовал синтаксис Delphi и компилятору надо это указать
Re: Программа для возведения натурального числа в степе
Добавлено:
09.10.2008 15:57:05
SergeySmlInf
А вообще-то задача возведения натурального А во вторую степень сводится к получению суммы ряда нечетных чисел от 1 до (по барабану) из А членов...
Re: Программа для возведения натурального числа в степе
Добавлено:
11.10.2008 14:47:02
shade
SergeySmlInf писал(а):А вообще-то задача возведения натурального А во вторую степень сводится к получению суммы ряда нечетных чисел от 1 до (по барабану) из А членов...
ну это как сводить, ведь квадрат числа можно получить простым умножением a^2 = a*a
Если запретить использовать умножение, то наиболее интересна реализация приведенная
B4rr4cuda, но только чисто теоретически
Re: Программа для возведения натурального числа в степе
Добавлено:
11.10.2008 20:26:59
Andreich
Есть еще один вариант по возведению числа в степень, правда он не на последовательности,.. Зато все просто и понятно!
X^Y = exp(ln(X)*Y)
Re: Программа для возведения натурального числа в степе
Добавлено:
13.10.2008 10:29:22
SergeySmlInf
Тогда надо выбросить "натурального"...
Re: Программа для возведения натурального числа в степе
Добавлено:
13.10.2008 15:04:58
shade
Andreich писал(а):Есть еще один вариант по возведению числа в степень, правда он не на последовательности,.. Зато все просто и понятно!
X^Y = exp(ln(X)*Y)
Да, можно, но как реализовать exp и ln ?
Имея только арифметические операции (сложение/вычитание и произведение/деление).
Re: Программа для возведения натурального числа в степе
Добавлено:
14.10.2008 00:52:00
Andreich
SergeySmlInf писал(а):Тогда надо выбросить "натурального"...
Зачем?!
shade писал(а):как реализовать exp и ln ?
Имея только арифметические операции (сложение/вычитание и произведение/деление).
Вопрос интересный,... Ответ на него мне не известен!
Re: Программа для возведения натурального числа в степе
Добавлено:
14.10.2008 14:20:06
Михаил Крамер
Andreich, ведь речь в ветке идёт о конкретной учебной задаче, ведь понятно, что в реальной проге никто не будет считать сумму нечётных чисел, вместо того, чтобы написать a * a, но для развития алгоритмического мышдения - полезно.