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