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.
请考虑我是一个完全的新手,谢谢!
解决方案
您走在正确的道路上,但实际上您甚至不需要存储除数 - 只需输出找到的每个除数( mod = 0 )并将其值添加到累加器变量中。
然后你也不需要while
. 相反,将for
循环更改为仅上升a
而不是 32767。
推荐阅读
- reactjs - 嵌套连接的 react-redux v6 组件未找到存储
- nginx - nginx proxy_pass 不传递uri
- chef-infra - 厨师服务器 api_fqdn 被忽略
- swift - 滚动单元格时如何使地图注释链接到ui集合单元格突出显示注释
- java - 如何使用 Spring-Data 在 Cassandra 中启用乐观锁定(版本控制)?
- java - Java - 错误:发生 JNI 错误,...在线程“main”java.lang.UnsupportedClassVersionError:
- python - 如何使用 Pelican 实现与内容文件夹中的档案或页面相同的行为?
- mongodb - 将带有“hasMany”的模型链接到带有数组的模型
- spring - java:comp/env 指向哪里?
- sql - SQLite:如何从列中仅提取数字和特殊字符?