pascal问题!用while语句解

2024-11-21 16:24:43
推荐回答(3个)
回答1:

这个...楼上已经打出来了
主要是是要想通一个问题,怎么才能将它分解为质因数相乘的模式
我们可以将一个计数器t从2开始增加(t=2的情况也要做)
如果n 能被t整除那么n div t 否则t+1
因为,任何合数都可以分解成质因数相乘的模式,
举个例子,n=20,t=2;
第一步 运算下来, n=20/2=10 t=2
第二步 运算下来, n=10/2=5 t=2
第三步 运算下来 n=5 t=3
第四步 运算下来 n=5 t=4
第五步 运算下来 n=5 t=5
第六部 因为t>=n then 输出
那么我们可以看到,因为20除了2次2,所以t如果到了4的话是没有任何效果的,那么我们就将这个数字分解质因数了
(感觉说得有点乱...)

回答2:

[主体思路]:
枚举 i (从2开始,直到 n )
检查每个 i 是否是 n 的因子

[程序]及[解释]:
Var //定义变量
n,i:Longint;
Begin
Readln(n);
write(n,"=");
i=1;
while i Begin
inc(i); //枚举
If n Mod i=0 Then //如果i是n的因子
Begin
n:=n Div i;
Write(i,'*');//输出 i 和 "*"
End;

If i=n Then // 这是n纪录了 剩下的最后一个因子
Begin
Writeln(n);
Exit;
End;
End;
End.

回答3:

当N>1时,就去寻找一个能把N整除的数将N约分,直到N=1为止。
Var
n,i:Longint;
Begin
Readln(n);
i:=2;
While n>1 Do
Begin
If n Mod i=0 Then
Begin
n:=n Div i;
Write(i,'*');
End
Else
Inc(i);
If i=n Then
Begin
Writeln(n);
Exit;
End;
End;
End.