Страница 1 из 1
		
			
				Программа для разложения числа на произведение просты
				
Добавлено: 
13.10.2008 17:31:24 fs444
				Есть задание:
В голове крутиться мысль про использование операторов For, только никак не могу ее прояснить. Ведь множителей, как я понял, может быть и два, и три, и десять? Как узнать, сколько именно их должно быть?
 
			
		
			
				Re: Программа для разложения числа на произведение прос
				
Добавлено: 
13.10.2008 19:02:32 Михаил Крамер
				Чегой-то у нас ветка в решебник превращается. Ну так попробовать можно:
- Код: Выделить всё
- var
 numb, powers: array [1..100] of integer;
 c, n, n1, i: integer;
 begin
 c:= 120;
 n:= 1;
 n1:= 0;
 while c <> 1 do
 begin
 i:= 2;
 while c mod i <> 0 do
 Inc(i);
 Inc(n1);
 if n1 = 1 then
 begin
 numb[n]:= i;
 powers[n]:= 1;
 end
 else if numb[n] = i then Inc(powers[n])
 else
 begin
 Inc(n);
 numb[n]:= i;
 powers[n]:= 1;
 end;
 c:= c div i;
 end;
 writeln(n);
 write('num = ');
 for i:= 1 to n do
 begin
 write(numb[i], ' ^ ', powers[i]);
 if i <> n then write(' * ');
 end;
 writeln;
 end.
 
Сделал для одного числа, для многих, думаю разберётсь. Может кто лучше напишет - писал на работе между делом.
 
			
		
			
				Re: Программа для разложения числа на произведение прос
				
Добавлено: 
14.10.2008 22:53:06 fs444
				Чегой-то у нас ветка в решебник превращается
Ну это потому что я паскаль по учебнику изучаю, поэтому и преваращается ) А до меня что из себя эта ветка представляла?  

 
			
		
			
				Re: Программа для разложения числа на произведение прос
				
Добавлено: 
15.10.2008 00:13:23 Deepthroat
				[offtop]
Прочитал название темы (про разложение числа на простые сомножители) и уже было подумал, что кто-то алгоритмы шифрования с открытым ключем ломать решил  
 
[/offtop] 
			 
			
		
			
				Re: Программа для разложения числа на произведение прос
				
Добавлено: 
15.10.2008 18:58:31 shade
				Года 4 назад решал примерно таким образом:
- Код: Выделить всё
- var
 N: Integer;
 x, p: Integer;
 begin
 readln(N);
 if N <= 0 then
 begin
 writeln('Error: N <= 0');
 exit;
 end; // if
 if N <= 1 then
 begin
 writeln(1);
 exit;
 end; // if
 x := 2;
 while x < sqrt(N) do
 begin
 if (N mod x) = 0 then
 begin
 p := 1;
 N := N div x;
 while (N mod x) = 0 do
 begin
 N := N div x;
 p := p + 1;
 end; // if
 writeln(x, '^', p);
 end; // if
 x := x + 2;
 end; // while
 if N > 1 then
 begin
 writeln(N, '^1');
 end; // if
 end.
 
Оригинальное решение где-то далеко в бекапах - потому восстанавливал по памяти, может что забыл 

(фишка в том, что по раскладываемое число уменьшается за чет выкидывания уже найденых делителей: уменьшается число - уменьшается число перебираемых значений)
 
			
		
			
				Re: Программа для разложения числа на произведение прос
				
Добавлено: 
18.10.2008 23:53:10 fs444
				А что значит 
// if
 и 
// while
 в некоторых местах программы? Это ты комментарий так обозначил? Комментарии же вроде фигурными скобками {...} обозначаются.
 
			
		
			
				Re: Программа для разложения числа на произведение прос
				
Добавлено: 
19.10.2008 13:11:33 Deepthroat
				В Delphi и FPC комментарии могут обозначаться так:
{ многострочный комментарий }
(* многострочный комментарий *)
//однострочный комментарий
В TurboPascal, если мне не изменяет память, однострочных комментариев нет.
			 
			
		
			
				Re: Программа для разложения числа на произведение прос
				
Добавлено: 
19.10.2008 13:17:52 fs444
				"//" строку не комментит, значит таких однострочных комментариев в TurboPascal нет. Может, shade спутал с чем-то?
			 
			
		
			
				Re: Программа для разложения числа на произведение прос
				
Добавлено: 
19.10.2008 17:01:25 Deepthroat
				Ничего он не спутал. Вы же не думаете, что Shade использовал TurboPascal?! И Вам зачем именно TurboPascal, не понятно. Скачайте fpc и тренируйтесь в нем.
			 
			
		
			
				Re: Программа для разложения числа на произведение прос
				
Добавлено: 
21.10.2008 17:24:52 SergeySmlInf
				Ребята! Для Ваших задач лучше всего - ABCPascal = и учебный, и с учебником, и под любую винду...
			 
			
		
			
				Re: Программа для разложения числа на произведение прос
				
Добавлено: 
21.10.2008 18:56:24 NXP
				Deepthroat писал(а):Скачайте fpc и тренируйтесь в нем.
+1
ИМХО Не используйте устаревшие, проприетарные, и прочие наркотические
вещества, подсаживающие личность на Micro$oft  
