Proggramming Languages assignment II
This is an assignment in Ada. If you have never programmed in Ada before, you can do the assignment on paper, with the understanding that syntax matters, and that you have to read the text carefully to acquire the basics. You can also install the compiler from the disk in the back of the book, or use the GNAT system (instructions follow) installed on all the servers at NYU. ---------------------- The following function determines naively whether a number is a prime or a composite: function Is_Prime (Val : Integer) return boolean is begin if Val = 2 then return True; else for Div in 2 .. val loop if Val mod Div = 0 then -- found divisor return False; elsif Div * Div > Val then -- no larger divisor return True; end if; end loop; end if; return True; -- redundant but suppresses warnings. end Is_Prime; a) Make sure you understand how this function works. b) Write a procedure Build_Primes, that uses the previous function to find all the prime numbers between 1 and 100. You can declare an array of size 30 (larger than necessary) to hold these primes. Your program will look as follows: procedure Prime_Numbers is All_Primes : array (1..50) of Positive; Num_Primes : Positive; -- how many actually appear between 1 and 100 function Is_Prime is ... procedure Build_Primes is ... begin Build_Primes; .... -- the next part of the assignment end Prime_Numbers; that is to say, the array of primes is global to both subprograms. c) Using the array of primes, write a procedure that prints the prime factorization of a number. For example, if the input is 17, the procedure prints: 17 is a prime while if the input is 18, the procedure prints: 18 = 2 * 3^2 using the caret "^" to denote exponentiation. In order to read and print integers in your program, you need to include the following library files in the context of the program: with Text_Io; use Text_Io; with Ada.Integer_Text_Io; use Ada.Integer_Text_Io; After which you can write Get (Val); to read from input, and Put (Val); to print. You can also print a full line as a string using Put_Line. To format a line that contains the string representation of integers, the attribute Image (to be discussed later) simplifies the task. So, assuming that the value of variable Val is 17, we can write: Put_Line (Integer'Image (17) & " is a prime"); The operator "&" denotes concatenation of strings. For guidance, look at chapters 6 and 7 of the text by Barnes. Enjoy!