10.04.2017

Số Armstrong

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