作业帮 > 综合 > 作业

输入一个正整数N,把它分解成质因子相乘的形式.如:36=1×2×2×3×3;用 FREE pascal

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/27 18:52:34
输入一个正整数N,把它分解成质因子相乘的形式.如:36=1×2×2×3×3;用 FREE pascal
function prime(inputnum:integer):boolean; end; {判断素数,代码不赘述了}
procedure printa;{输出}
begin
for i:=1 to node-2 do
write(a[i],'×');
write(a[node-1]);
end;
procedure work(nn:integer);
begin
if prime(nn)=true then {不能分解时,输出答案}
begin
printa;
exit;
end;
for i:=1 to trunc(sqrt(nn)) do
begin
if (prime(i)=true) and (nn mod i=0) then
begin
a[node]=i;
inc(node);
work(nn/i);
end;
end;
end;
begin
input(n);
a[1]=1;{存储分解的质因数}
node=2;{数组a的指针变量}
work(n);
end.
可能语法有误,稍加修改就可以,但是有比本算法效率更高的算法,
例如另开一个数组专门记录调用过prime函数的值,再次调用此函数时只要查询这个数组就可以了……