我想制作一个程序,我将检查是否有任何Armstron数字(数字等于它的数字的立方体,例如153)。
这也是完美的数字(数字等于它的除数之和,不包括它自身,例如28(1 + 2 + 4 + 7 + 14)) 因此我做了一个程序,看看一个数字是否是阿姆斯特朗的数字,看看它是否是完美的数字。
program Armstrong;
var i,n,j,d,s,p:integer;
begin
for i:=1 to 1000 do
begin
j:=i mod 10;
d:=i div 10 mod 10;
s:=i div 100;
n:=j*j*j+d*d*d+s*s*s;
if n=i then
writeln(i);
end;
end.
对于完美的数字,它是
program Perfect;
var n,s,i:integer;
begin
for n:=1 to 1000 do
begin
s:=0;
for i:=1 to n do
begin
if n mod i = 0 then
s:=s+i;
end;
if s=n then
writeln(n);
end;
end.
所以我不知道如何合并它们,看看我从第一个程序得到的任何数字是否也出现在第二个程序中。
答案 0 :(得分:0)
我做了很长时间的Pascal。所以假设我已经使用pseudo code
作为答案。
从Armstrong中删除你的循环并将代码放在这个函数中。
function Armstrong(i: integer): integer;
(* code goes here. And return 0 or 1 based on Armstrong *)
从Perfect中删除你的循环,并将此代码放在此函数中
function Perfect(i: integer): integer;
(* code goes here. And return 0 or 1 based on Perfect *)
然后从这样的循环中调用它:
for i:=1 to 1000 do
x = Armstrong(i);
y = Perfect(i);
if(x == 1 and y == 1) then
(* do something *)
end;