求解水仙花数(20分)

  • 主题发起人 主题发起人 charles2002
  • 开始时间 开始时间
C

charles2002

Unregistered / Unconfirmed
GUEST, unregistred user!
只输入一个数,程序自动计算小于该数的水仙花数
 
下面这个大概行,仓促之间写的,不知道是否有错。
是abc=a*a*a+b*b*b=c*c*c吧?
如:153=1+5*5*5+3*3*3,还有370、371、407、

procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
input_Str: string;
k: array[0..63] of Integer;
judgeint: Double;
TmpInt: Double;
begin
input_Str := Edit1.Text;

for i := 0 to StrToInt(input_Str) do
begin
judgeint := 0;
for j := 0 to Length(IntToStr(i)) - 1 do
begin
TmpInt := StrToInt(Copy(IntToStr(i), j + 1, 1));
judgeint := judgeint + TmpInt * TmpInt * TmpInt;
end;
if judgeint = i then
ShowMessage(IntToStr(i));
end;
end;
 
用這個試一下:
只输入一个数,程序自动计算小于该数的水仙花数.
Procedure Tform1.Getdata(i:integer);
var str:string;
result0:string;
j,k,l:integer;
begin
result0:='';
for j:=i-1 downto 1 do //小于該數的
begin
str:=inttostr(j);
l:=0;
for k:=1 to length(str) do
l:=l+strtoint(str[k])*strtoint(str[k])*strtoint(str[k]);
if l=j then
result0:=result0+#13+inttostr(j);
End;
showmessage(result0);
End;
 
#include<iostream.h>
#include<math.h>
#include<stdio.h>

float armstrong(int number)
{
float sum;
int m,p,s,num;
sum=0
num=number;
s=0;
do
{
s=s+1;
m=num%10;
num=num/10;
}while(num!=0);
num=number;
for(p=1;p<=s;p++)
{
int re=num%10;
num=num/10;
sum=sum+pow(re,s);
}
return sum;
}

main()
{
int i,k,num;
cout<<"Please Input your number:/n";
cin>>num;
i=num;
for(i=10;i<num;i++)
{
k=armstrong(i);
if (k==i) cout<<"The armstrong number below "<<num<<"is "<<i<<endl;
}
return 0;
}
 
多人接受答案了。
 
后退
顶部