水仙花数问题求解(PASCAL语言)

来源:百度知道 编辑:UC知道 时间:2024/05/30 09:59:25

PROGRAM sxhs
var i,a,b,c:integer;
begin
for i:=100 to 999 do
begin
c:=i mod 10; {取个位数}
b:=(i div 10) mod 10; {取十位数}
a:=i div 100; {取百位数}
if i=a*a*a+b*b*b+c*c*c then writeln(i:6);
end;
readln
end.

解析:根据题意采用三重循环来求解,由于循环次数一定,用for循环最为简单。
program shuixian;
var
a,b,c:integer;
begin
for a:=1 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
if a*a*a+b*b*b+c*c*c=a*100+b*10+c
then write(a*100+b*10+c:6);
readln;
end.
同时也可以采用一个for循环来求解,表面上看起来好像优于三重循环。实际上却比上面的程序效率低,请自己分析。程序如下:
program shuixian1
var
m,a,b,c:integer;
begin
for m:=100 to 999 do
begin
a:=m div 100;
b:=(m mod 100) div 10;
c:=m-a*100-b*100;