因式分解 pascal 源程序将大于1的自然数N进行因式分解,满足N=a1*a2*a3…am.编一程序,对任意的自然数N(1 12=1212=6*212=4*312=3*412=3*2*212=2*612=2*3*212=2*2*3输入(breeding.in)输入文件仅有一行包含一个整
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 16:33:27
因式分解 pascal 源程序将大于1的自然数N进行因式分解,满足N=a1*a2*a3…am.编一程序,对任意的自然数N(1 12=1212=6*212=4*312=3*412=3*2*212=2*612=2*3*212=2*2*3输入(breeding.in)输入文件仅有一行包含一个整
因式分解 pascal 源程序
将大于1的自然数N进行因式分解,满足N=a1*a2*a3…am.
编一程序,对任意的自然数N(1 12=12
12=6*2
12=4*3
12=3*4
12=3*2*2
12=2*6
12=2*3*2
12=2*2*3
输入(breeding.in)
输入文件仅有一行包含一个整数N.
输出(breeding.out)
输出文件仅有一行包含一个整数表示自然数N的因式分解方案总数.
输入样例:
12
输出样例
8
下面的程序错哪了?样例也过不了!
var x,y:array[1..50000]of longint;
m,n,i,ans:longint;
procedure fj(n:longint);
var i,j,k:longint;
begin
while (n1) do
begin
k:=2;
while n mod k0 do inc(k);
inc(m);
x[m]:=k;
while n mod k=0 do
begin
n:=n div k;
inc(y[m]);
end;
end;
end;
begin
read(n);
m:=0;
fj(n);
ans:=1;
for i:=1 to m do
ans:=ans*(y[i]+1);
writeln(ans);
end.
1
因式分解 pascal 源程序将大于1的自然数N进行因式分解,满足N=a1*a2*a3…am.编一程序,对任意的自然数N(1 12=1212=6*212=4*312=3*412=3*2*212=2*612=2*3*212=2*2*3输入(breeding.in)输入文件仅有一行包含一个整
var
a:array [0..100] of integer;
n,h:integer;
procedure tr(m,t:integer);
var
i:integer;
begin
for i:=2 to m do
if (a[t-1]
var
a:array [0..100] of integer;
n,h:integer;
procedure tr(m,t:integer);
var
i:integer;
begin
for i:=2 to m do
if (a[t-1]<=i) and (i<=n div 2) and (m mod i=...
全部展开
var
a:array [0..100] of integer;
n,h:integer;
procedure tr(m,t:integer);
var
i:integer;
begin
for i:=2 to m do
if (a[t-1]<=i) and (i<=n div 2) and (m mod i=0)then
begin
a[t]:=i;
m:=m div a[t];
if m=1 then inc(h) else tr(m,t);
m:=m+a[t];
end;
end;
begin
read(n);
tr(n,2);
write(h);
end.
都差不多,老板给工资
收起