This package contains subprograms for doing number theoretic computations. It is used in VTC's CIS-2730, Lab #2. ckage Number_Theory is Constant Definitions Gamma : constant := 0.57721_56649_01532_86060_65120_90082_40243_10421_59335_93992; Type Definitions The range of values for which N! can be computed without overflow. subtype Factorial_Argument_Type is Integer range 0 .. 12; -- The range of values that might meaningfully be asked: are you prime? subtype Prime_Argument_Type is Integer range 2 .. Integer'Last; A floating point type with at least 15 significant decimal digits. type Floating_Type is digits 15;

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

code in ada 

 

with Ada.Numerics.Generic_Elementary_Functions;

package body Number_Theory is

   -- Instantiate the library for floating point math using Floating_Type.
   package Floating_Functions is new Ada.Numerics.Generic_Elementary_Functions(Floating_Type);
   use Floating_Functions;


   function Factorial(N : in Factorial_Argument_Type) return Positive is
   begin
      -- TODO: Finish me!
      --
      -- 0! is 1
      -- N! is N * (N-1) * (N-2) * ... * 1
      return 1;
   end Factorial;


   function Is_Prime(N : in Prime_Argument_Type) return Boolean is
      Upper_Bound     : Prime_Argument_Type;
      Current_Divisor : Prime_Argument_Type;
   begin
      -- Handle 2 as a special case.
      if N = 2 then
         return True;
      end if;

      Upper_Bound := N - 1;
      Current_Divisor := 2;
      while Current_Divisor < Upper_Bound loop
         if N rem Current_Divisor = 0 then
            return False;
         end if;
         Upper_Bound := N / Current_Divisor;
      end loop;
      return True;
   end Is_Prime;


   function Prime_Counting(N : in Prime_Argument_Type) return Natural is
   begin
      -- TODO: Finish me!
      --
      -- See the lab page for more information.
      return 0;
   end Prime_Counting;


   function Logarithmic_Integral(N : in Prime_Argument_Type) return Floating_Type is
   begin
      -- TODO: Finish me!
      --
      -- See the lab page for more information.
      return 1.0;
   end Logarithmic_Integral;

end Number_Theory;

5. Modify your main program to print out both the exact value of T(n) and your computed value of li(n) to compare them. To do this you will need to instantiate the Ada library package Float_I0 for your specific floating point type.
package Floating_10 is new Ada.Float_I0(Number_Theory.Floating_Type);
After doing this, you will have access to a procedure Floating_10. Put that knows how to print the floating point type used by package Number_Theory.
6. It turns out that n(n) < li(n) for all the values of n we are interested in using. Add a postcondition to your Prime_Counting function that states this. This postcondition is a partial statement of correctness. If the postcondition is violated
something is definitely wrong. However, your Prime_Counting could still be wrong and satisfy the postcondition anyway.
Transcribed Image Text:5. Modify your main program to print out both the exact value of T(n) and your computed value of li(n) to compare them. To do this you will need to instantiate the Ada library package Float_I0 for your specific floating point type. package Floating_10 is new Ada.Float_I0(Number_Theory.Floating_Type); After doing this, you will have access to a procedure Floating_10. Put that knows how to print the floating point type used by package Number_Theory. 6. It turns out that n(n) < li(n) for all the values of n we are interested in using. Add a postcondition to your Prime_Counting function that states this. This postcondition is a partial statement of correctness. If the postcondition is violated something is definitely wrong. However, your Prime_Counting could still be wrong and satisfy the postcondition anyway.
This package contains subprograms for doing number theoretic computations.
It is used in VTC's CIS-2730, Lab #2.
.M
4 v package Number_Theory is
Constant Definitions
..
7
Gamma : constant := 0.57721_56649_01532_86060_65120_90082_40243_10421_59335_93992;
10
11
Type Definitions
12
13
The range of values for which N! can be computed without overflow.
subtype Factorial_Argument_Type is Integer range 0 .. 12;
14
15
16
-- The range of values that might meaningfully be asked: are you prime?
subtype Prime_Argument_Type is Integer range 2 .. Integer'Last;
17
18
19
A floating point type with at least 15 significant decimal digits.
type Floating_Type is digits 15;
20
21
22
23
24
Subprogram Declarations
25
26
27
Returns N!
28
function Factorial(N : Factorial_Argument_Type) return Positive;
29
Returns True if N is prime; False otherwise.
function Is_Prime(N : in Prime_Argument_Type) return Boolean;
32
Returns the number of prime numbers less than or equal to N.
function Prime_Counting(N : in Prime_Argument_Type) return Natural;
33
34
35
-- The logarithmic integral function, which is an approximation of the prime counting function.
function Logarithmic_Integral(N : in Prime_Argument_Type) return Floating_Type;
36
37
38
39
end Number_Theory;
123 tn ON
mmm mmm mm mm
Transcribed Image Text:This package contains subprograms for doing number theoretic computations. It is used in VTC's CIS-2730, Lab #2. .M 4 v package Number_Theory is Constant Definitions .. 7 Gamma : constant := 0.57721_56649_01532_86060_65120_90082_40243_10421_59335_93992; 10 11 Type Definitions 12 13 The range of values for which N! can be computed without overflow. subtype Factorial_Argument_Type is Integer range 0 .. 12; 14 15 16 -- The range of values that might meaningfully be asked: are you prime? subtype Prime_Argument_Type is Integer range 2 .. Integer'Last; 17 18 19 A floating point type with at least 15 significant decimal digits. type Floating_Type is digits 15; 20 21 22 23 24 Subprogram Declarations 25 26 27 Returns N! 28 function Factorial(N : Factorial_Argument_Type) return Positive; 29 Returns True if N is prime; False otherwise. function Is_Prime(N : in Prime_Argument_Type) return Boolean; 32 Returns the number of prime numbers less than or equal to N. function Prime_Counting(N : in Prime_Argument_Type) return Natural; 33 34 35 -- The logarithmic integral function, which is an approximation of the prime counting function. function Logarithmic_Integral(N : in Prime_Argument_Type) return Floating_Type; 36 37 38 39 end Number_Theory; 123 tn ON mmm mmm mm mm
Expert Solution
steps

Step by step

Solved in 3 steps with 4 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY