帕斯卡(Pascal)-写下一个数字的所有除数,然后求和

时间:2018-10-22 17:46:48

标签: pascal

我刚刚开始编程,标题中给了我们作业。我不知道如何以可汇总的形式获取这些数字,所以我认为我至少会把它们写出来,但是由于某种原因我看不到,所以它不起作用。有什么建议吗?

  var
      a,i: integer;
      del: array [1..32767] of boolean;
  begin
      i:=1;
      readln(a);
      for i:=1 to 32767 do del[i]:=false;
      while i<>a do
      begin
          for i:=1 to 32767 do
              begin
              if (a MOD i =0) then del[i]:=true;
              end
      end;
      if del[i] then writeln(i,' je delitelem ',a);
  end.

请认为我是新手,谢谢!

1 个答案:

答案 0 :(得分:0)

您所走的路是正确的,但实际上甚至不需要存储除数-只需输出找到的除数(mod = 0),然后将其值添加到累加器变量即可。

然后您也不需要while。而是将for循环更改为仅上升到a而不是32767。