Dado un número x, determine si el número dado es el número de Armstrong o no. Un entero positivo de n dígitos se denomina número de Armstrong de orden n (el orden es el número de dígitos) si.
abcd... = pow(a, n) + pow(b, n) + pow(c, n) + pow(d, n) + ....
Ejemplo:
Input : 153 Output : Yes 153 is an Armstrong number. 1*1*1 + 5*5*5 + 3*3*3 = 153 Input : 120 Output : No 120 is not a Armstrong number. 1*1*1 + 2*2*2 + 0*0*0 = 9 Input : 1253 Output : No 1253 is not a Armstrong Number 1*1*1*1 + 2*2*2*2 + 5*5*5*5 + 3*3*3*3 = 723 Input : 1634 Output : Yes 1*1*1*1 + 6*6*6*6 + 3*3*3*3 + 4*4*4*4 = 1634
declare -- declare variable n, s,r, len -- and m of datatype number n number:=1634; s number:=0; r number; len number; m number; begin m := n; len := length(to_char(n)); -- while loop till n>0 while n>0 loop r := mod(n , 10); s := s + power(r , len); n := trunc(n / 10); end loop; if m = s then dbms_output.put_line('yes'); else dbms_output.put_line('no'); end if; end; -- End program
producción:
Yes