回 帖 发 新 帖 刷新版面

主题:求助一道难题

編寫一個程序,可以將任意一個絕對正整數因式分解~例如:18=2*3*3


一直都想不出来怎么写

回复列表 (共3个回复)

沙发

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.

以上注释是我说的你不要说幼稚
我会很自卑的

板凳


[fly]开心哇[/fly][em8]

3 楼

我认为下面这个方法更好:
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.

我来回复

您尚未登录,请登录后再回复。点此登录或注册