fork download
  1. with Ada.Text_IO; use Ada.Text_IO;
  2. with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
  3. with Ada.Numerics; use Ada.Numerics;
  4. with Ada.Numerics.Elementary_Functions;
  5. use Ada.Numerics.Elementary_Functions;
  6.  
  7. procedure Calculate_digits is
  8. index, number : Integer;
  9. factorial_digits : Float := 0.0;
  10. begin
  11. loop
  12. Put("Enter an integer greater than 1: ");
  13. Get(number);
  14. exit when number > 1;
  15. end loop;
  16. for index in 2..number loop
  17. factorial_digits := factorial_digits + Log(Float(index), 10.0);
  18. end loop;
  19. Put_Line("The factorial of"&Integer'Image(number)&" has"&Integer'Image(Integer(factorial_digits))&" digits.");
  20. end Calculate_digits;
Success #stdin #stdout 0.01s 5320KB
stdin
1000
stdout
Enter an integer greater than 1: The factorial of 1000 has 2568 digits.