主题:求助一道难题
chengg7
[专家分:0] 发布于 2005-03-31 03:24:00
編寫一個程序,可以將任意一個絕對正整數因式分解~例如:18=2*3*3
一直都想不出来怎么写
回复列表 (共3个回复)
沙发
xuzhenyi [专家分:850] 发布于 2005-03-31 21:29:00
var n,i,k:longint;
begin
readln(n);
for i:=2 to n do
begin
while n<>i do
begin
if n mod i=0 then{2,3都是质数,这样我不断地把这些质数拿走,那么n不是就不会取到合数了}
begin
write(i,'*');
n:=trunc(n/i);{注意,这里为什么取整呢?原因并不是需要,而是PASCAL不允许}
end
else break;
end;
end;
writeln(n);
readln;
end.
以上注释是我说的你不要说幼稚
我会很自卑的
板凳
xuzhenyi [专家分:850] 发布于 2005-03-31 21:32:00
[fly]开心哇[/fly][em8]
3 楼
smoon [专家分:30] 发布于 2005-10-02 07:24:00
我认为下面这个方法更好:
program fenjie;
var
i,n:integer;
begin
write('input a number:');
readln(n);
write(n,'=');
for i:=2 to n-2 do
while (n mod i=0) and (n>i) do
begin
write(i,'*');
n:=trunc(n/i);
end;
write(n);
end.
我来回复