Số Amstrong


SUBMITTED BY: Guest

DATE: Nov. 20, 2014, 3:23 p.m.

FORMAT: Text only

SIZE: 934 Bytes

HITS: 797

  1. PROGRAM SoAmstrong;
  2. USES crt;
  3. VAR g: INTEGER;
  4. FUNCTION lt(x,y:INTEGER):LONGINT;
  5. VAR i: BYTE;k: LONGINT;
  6. BEGIN
  7. k:=x;
  8. IF y=0 THEN lt:=1
  9. ELSE
  10. FOR i:=1 TO y-1 DO
  11. k:= x * k;
  12. lt:=k;
  13. END;
  14. FUNCTION Chso(x,y:LONGINT):BYTE;
  15. VAR k: BYTE;
  16. BEGIN
  17. k:=(x MOD lt(10,y)) DIV (lt(10,y) DIV 10);
  18. chso:=k;
  19. END;
  20. FUNCTION Kiemtra(x,l:INTEGER):BOOLEAN;
  21. VAR y: BOOLEAN; s,i: LONGINT;
  22. BEGIN
  23. s:=0;
  24. FOR i:= l DOWNTO 1 DO
  25. s:= lt(chso(x,i),l)+s ;
  26. IF s = x THEN y := TRUE ELSE y:= FALSE;
  27. Kiemtra:=y;
  28. END;
  29. PROCEDURE Inra;
  30. VAR a,b,n : LONGINT;
  31. BEGIN
  32. FOR n:= 3 TO 6 DO BEGIN
  33. b:=(10*lt(10,n-1)-1);
  34. FOR a:=lt(10,n-1) TO b DO
  35. IF Kiemtra(a,n) THEN
  36. BEGIN
  37. Writeln(a);
  38. g:=g+1;
  39. END;
  40. END;
  41. END;
  42. BEGIN
  43. Inra;
  44. Writeln;
  45. Write('So luong so Amstrong la ',g:3);
  46. Readln;
  47. END.

comments powered by Disqus