Advertisement
Guest User

palca

a guest
Mar 22nd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.48 KB | None | 0 0
  1. program f1;
  2. uses math;
  3. var
  4.   n,k,i,l,osztok,l2:longint;
  5.   dprime,dprime2,palca,d,pow:array of integer;
  6.  
  7.  
  8. procedure add(n:integer);
  9. begin
  10.   if (dprime[l]<>n) or (l=0) then
  11.     begin
  12.       l:=l+1;
  13.       dprime[l]:=n;
  14.       dprime2[l]:=1;
  15.     end
  16.   else
  17.     begin
  18.       dprime2[l]+=1;
  19.     end;
  20. end;
  21. procedure oszto(k:integer);
  22. var i,t,j:longint;
  23. begin
  24.   for i:=dprime2[k] downto 0 do
  25.     begin
  26.       pow[k]:=i;
  27.       if k>1 then
  28.         begin
  29.  
  30.         oszto(k-1)
  31.         end
  32.       else
  33.        begin
  34.          l2:=l2+1;
  35.          t:=1;
  36.          for j:=1 to l do
  37.            t:=t*trunc(power(dprime[j],pow[j]));
  38.          writeln('pow:');
  39.          for j:=1 to l do writeln(pow[j]);
  40.          d[l2]:=t;
  41.        end;
  42.  
  43.     end;
  44.     for j:=1 to k do
  45.           pow[j]:=dprime2[j];
  46. end;
  47. begin
  48.   l:=0;
  49.   readln(n);
  50.   setlength(palca,n);
  51.   setlength(dprime,trunc(sqrt(n))+3);
  52.   setlength(dprime2,trunc(sqrt(n))+3);
  53.   {for i:=0 to n-1 do
  54.     read(palca[i]);}
  55.   while n mod 2 = 0 do
  56.     begin
  57.       add(2);
  58.       n:=n div 2;
  59.     end;
  60.   for i:=1 to floor(sqrt(n)/2) do
  61.     if n mod (i*2+1) = 0 then
  62.     begin
  63.       add(i*2+1);
  64.       n:=n div (i*2+1);
  65.     end;
  66.   if n>=dprime[l] then add(n);
  67.   osztok:=1;
  68.   for i:=1 to l do
  69.     osztok:=osztok*(dprime2[i]+1);
  70.   setlength(d,osztok);
  71.   setlength(pow,l);
  72.   pow:=dprime2;
  73.   for i:=1 to l do
  74.     writeln(dprime[i],'   ',dprime2[i]);
  75.   writeln(osztok);
  76.   oszto(l);
  77.   for i:=1 to l2 do writeln(d[i]);
  78.   readln;
  79. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement