Страница 1 из 1

Программа для возведения натурального числа в степень

СообщениеДобавлено: 04.10.2008 23:42:25
fs444
Есть задание: написать программу для возведения натурального числа в степень.
Текст задания.JPG

Я не понимаю смысла закономерности
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
А мой алгоритм такой 8)
Код: Выделить всё
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: возводимое число может быть и вещественным :wink:

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 :lol:
Если запретить использовать умножение, то наиболее интересна реализация приведенная 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, но для развития алгоритмического мышдения - полезно.