首页 > 解决方案 > 帕斯卡 - 写出一个数字的所有除数并将它们相加

问题描述

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

  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.

请考虑我是一个完全的新手,谢谢!

标签: pascal

解决方案


您走在正确的道路上,但实际上您甚至不需要存储除数 - 只需输出找到的每个除数( mod = 0 )并将其值添加到累加器变量中。

然后你也不需要while. 相反,将for循环更改为仅上升a而不是 32767。


推荐阅读