Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.17;
Скачать: CL | DM;

Вниз

Разложение числа на множетели   Найти похожие ветки 

 
Фёдр_иваныч   (2006-11-27 17:03) [0]

Привет всем, помогите пожалуйста решить следующую задачу:
Разложить число N на простые множители. N - целое, вводится с клавиатуры. На экран вывести просто все множители, участвующие в разложении. Например, для N = 100 на экран должны быть выведены числа 2  2  5  5 (т.к. 100 = 2*2*5*5)
Если не хотите писать полный код, то подскажите по подробнее каким способом это организовать


 
Cawa ©   (2006-11-27 17:08) [1]

извините за не осведомленность, но можно по подробней в частности: есть ли ограничение количества множителей и что значит "простой множитель"


 
Draught   (2006-11-27 17:09) [2]

На сколько я помню алгебру или это была еще математика
разложение числа на множители - деление числа сначала на минимальный делитель, затем результат так же делим на минимальный делитель и т.д. до тех пор, пока не доберемся до простого числа...


 
MBo ©   (2006-11-27 17:17) [3]

почти так же, как в:
http://delphimaster.net/view/2-1164628470/
в цикле проверяем - если делится, то делим на очередное число (возможно, несколько раз) и выводим его как множитель


 
Cooller   (2006-11-27 19:04) [4]

MBo ©   (27.11.06 17:17) [3]
Можно по подробние а то я не пойму что ты имел в виду


 
Palladin ©   (2006-11-27 19:05) [5]

почти так же, как в:
http://delphimaster.net/view/2-1164628470/
в цикле проверяем - если делится, то делим на очередное число (возможно, несколько раз) и выводим его как множитель


 
Фёдр_иваныч   (2006-11-27 19:13) [6]

Я не совсем понимаю эту строчку:
в цикле проверяем - если делится, то делим на очередное число (возможно, несколько раз) и выводим его как множитель


 
Palladin ©   (2006-11-27 19:43) [7]

Красивше эта задача решается рекурсией.

procedure TForm1.sButton1Click(Sender: TObject);

Function Mults(n:Integer):String;
Procedure _FindMult(n:Integer;Var s:String);
Var
 i:Integer;
Begin
 For i:=2 to n Div 2 Do If n mod i=0 Then
  Begin
   s:=s+IntToStr(i)+",";
   _FindMult(n div i,s);
   Exit;
  End;
 s:=s+IntToStr(n);
End;
Begin
Result:="";
_FindMult(n,Result);
End;

begin
Edit1.Text:=Mults(1001);
end;

ps что то я раздобрел как поел... )


 
TUser ©   (2006-11-27 20:12) [8]

i := 2; f := true;
while f and i < sqrt(число) do
 while f and число mod i = 0 do
   write (i, " * ");
   число Ж= число div i
   if число = 1 then
     f := false;
 inc (i);
if число <> 1 then
 writeln (число)
 else
for i := 0 to 2 do
 writeln (#8)



Страницы: 1 вся ветка

Текущий архив: 2006.12.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.048 c
15-1164498423
eRoR_rrr
2006-11-26 02:47
2006.12.17
Посоветуйте простенький IRC server под Win


15-1164612921
malefik
2006-11-27 10:35
2006.12.17
> Стабильность .....TServerSocket


15-1164303261
ZMan
2006-11-23 20:34
2006.12.17
Народ заддосили?


15-1164573191
WondeRu
2006-11-26 23:33
2006.12.17
Вопросы в "Потрепаться" за январь 2005


5-1145440086
DVM
2006-04-19 13:48
2006.12.17
Переопределить OnClick у потомка TCustomControl?