因式分解 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/07/17 00:31:11
![因式分解 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)输入文件仅有一行包含一个整](/uploads/image/z/15059208-48-8.jpg?t=%E5%9B%A0%E5%BC%8F%E5%88%86%E8%A7%A3+pascal+%E6%BA%90%E7%A8%8B%E5%BA%8F%E5%B0%86%E5%A4%A7%E4%BA%8E1%E7%9A%84%E8%87%AA%E7%84%B6%E6%95%B0N%E8%BF%9B%E8%A1%8C%E5%9B%A0%E5%BC%8F%E5%88%86%E8%A7%A3%2C%E6%BB%A1%E8%B6%B3N%3Da1%2Aa2%2Aa3%E2%80%A6am.%E7%BC%96%E4%B8%80%E7%A8%8B%E5%BA%8F%2C%E5%AF%B9%E4%BB%BB%E6%84%8F%E7%9A%84%E8%87%AA%E7%84%B6%E6%95%B0N%EF%BC%881+12%3D1212%3D6%2A212%3D4%2A312%3D3%2A412%3D3%2A2%2A212%3D2%2A612%3D2%2A3%2A212%3D2%2A2%2A3%E8%BE%93%E5%85%A5%EF%BC%88breeding.in%EF%BC%89%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%E4%BB%85%E6%9C%89%E4%B8%80%E8%A1%8C%E5%8C%85%E5%90%AB%E4%B8%80%E4%B8%AA%E6%95%B4)
因式分解 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.
都差不多,老板给工资
收起