Một số tự nhiên n chữ số được gọi là một số Armstrong nếu tổng các luỹ thừa bậc n các chữ số của nó bằng chính nó. ( Ví dụ: 153 = 1^3 + 5^3 + 3^3 --> 153 là số Armstrong). Lập trình để đưa ra các số Armstrong trong đoạn <n1,n2> bất kỳ. Có bao nhiêu số Armstrong trong đoạn ấy?
Giải
Var a: array[1..50] of longint;
n1,n2,i,j,n,g,h,k,tong,tich,dem: Longint;
BEGIN
Write( ' Nhap n1,n2: '); readln(n1,n2);
Write('=> Cac so Armstrong trong doan ',n1,'-->',n2,' la: ');
For j:= n1 to n2 do
Begin
i:=0; n:=j;
Repeat
i:=i+1; a[i]:= n mod 10; n:= n div 10;
Until n= 0;
tong:=0;
For g:= 1 to i do
begin
tich:=1;
For h:= 1 to i do tich:=tich*a[g];
tong:=tong + tich;
end;
If j = tong Then begin write(j,', '); dem:=dem+1; end;
End;
Writeln; Write(' So cac so Armstrong trong doan ',n1,'-->',n2,' la: ',dem);
Readln;
END.
No comments:
Post a Comment
Cảm ơn bạn đã nhận xét