47 lines
919 B
Plaintext
47 lines
919 B
Plaintext
Program PrimeDecomposition(output);
|
|
|
|
type
|
|
DynArray = array of integer;
|
|
|
|
procedure findFactors(n: Int64; var d: DynArray);
|
|
var
|
|
divisor, next, rest: Int64;
|
|
i: integer;
|
|
begin
|
|
i := 0;
|
|
divisor := 2;
|
|
next := 3;
|
|
rest := n;
|
|
while (rest <> 1) do
|
|
begin
|
|
while (rest mod divisor = 0) do
|
|
begin
|
|
setlength(d, i+1);
|
|
d[i] := divisor;
|
|
inc(i);
|
|
rest := rest div divisor;
|
|
end;
|
|
divisor := next;
|
|
next := next + 2; // try only odd numbers
|
|
// cut condition: avoid many useless iterations
|
|
if (rest < divisor * divisor) then
|
|
begin
|
|
setlength(d, i+1);
|
|
d[i] := rest;
|
|
rest := 1;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
var
|
|
factors: DynArray;
|
|
j: integer;
|
|
|
|
begin
|
|
setlength(factors, 1);
|
|
findFactors(1023*1024, factors);
|
|
for j := low(factors) to high(factors) do
|
|
writeln (factors[j]);
|
|
readln;
|
|
end.
|