free pascal问题,请解释。。。。
这是一个判断质因子的问题。varn,a,i,j,t:longint;beginreadln(n);t:=n;write(n,'=');a:=2;whilet>1do这一步...
这是一个判断质因子的问题。
var
n,a,i,j,t:longint;
begin
readln(n);
t:=n;
write(n,'=');
a:=2;
while t>1 do 这一步是什么意思啊?
begin
while t mod a=0 do 这一步又是什么意思啊?
begin
if t div a=1 then write(a) else write(a,'*');
t:=t div a;
end;
inc(a); 这里为什么要inc啊?为什么不放在上面?
end;
end. 展开
var
n,a,i,j,t:longint;
begin
readln(n);
t:=n;
write(n,'=');
a:=2;
while t>1 do 这一步是什么意思啊?
begin
while t mod a=0 do 这一步又是什么意思啊?
begin
if t div a=1 then write(a) else write(a,'*');
t:=t div a;
end;
inc(a); 这里为什么要inc啊?为什么不放在上面?
end;
end. 展开
展开全部
第一个while是指t>1的情况下进入,即若输入n=0、1则直接输出。
第二个while是指t mod a=0的时候进入,即分解质因数。若分解了这个因数后的数还有这个因数,则继续分解:例:4=2*2。
最后t div a=1时就不用输出乘号了。
inc为什么不放在上面?问题问得好。
首先,inc如果放在上面,则会(一定几率)造成死循环:
例:t=28,第一步后输出2*,若inc(a)放在上面,则下一步a=3,t mod a<>0,就会一直卡在这里。(请自行验证)。
所以,inc(a)是分解质因数的一个重要步骤,即分解质因数的因数每次循环完后需要加一。
具体框架:
while(这是第一个开头)
begin
while(这是第二个开头)
begin
end(这是第二个结尾)
end(这是第一个结尾)
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
亚果会
2024-04-11 广告
2024-04-11 广告
Goma Greens是一家专注于提供高品质有机蔬果的企业。我们致力于为消费者带来新鲜、健康、无污染的食材,以满足现代人对健康生活的追求。我们的产品均来自精心挑选的有机农场,通过严格的品质控制,确保每一份食材都达到最高标准。此外,我们还提供...
点击进入详情页
本回答由亚果会提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询