关于pascal编程的问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:05:08
问题:输入一个正整数n,将n分解成质因数幂的乘积形式。例如:36=2^2*3^2

var
n,i,c:longint;a:array[2..97] of longint;
begin
readln(n);i:=2;write(n,'=');
fillchar(a,100,0);
while n>1 do
begin
while (n mod i <>0) do
inc(i);
inc(a[i]);
n:=n div i;
end;
for i:=97 downto 2 do
if a[i]<>0 then begin
c:=i;break;end; {这段用来找最大一个约数}
for i:=2 to 97 do if a[i]<>0 then
begin
if i<>c then write(i,'^',a[i],'*')
else write(i,'^',a[i]); {C为最大一个约数,也是最后一个,所以不用 '*' }
end;
end.

program b;
var
fen:array[0..50]of integer;
x:integer;

procedure print(a:integer);
var i:integer;
begin
write(fen[1]);
for i:= 2 to a do
write('*',fen[i]);
writeln;
end;

procedure work(shu,i:integer);
var j:integer;
begin
for j:=fen[i-1] to trunc(sqrt(shu)) do
if shu mod j=0then
begin fen[i]:=j;work(shu div f