ReadMeadditional.txt Shean T. McMahon P231, Final Project New Developments To compile this program just compile Main.cpp with g++. No switches or options need to be selected. Compiling will also implement the "test" program. Updates to NumberTheory Class * Added virtual functions and polymorphism to handle I/O for most functions. Previously, all I/O was done using cin and cout statements. Currently, virtual functions and polymorphism is used for I/O on all but operations which require multiple ( >2 ) inputs or outputs. * Removed Congruences and other functions classes These classes were removed to ease modifications to the main and header files. Reinstating them is not particularly difficult, although there is nothing really c++ about them, so they don't add anything which has not already been done. * Redesigned Is_Prime function to eliminate bug Previously, the Is_Prime function had two bugs. It would always report that 3 was a composite number, and all multiples of 2 were reported to be prime. This had devestating consequences in all methods which used Is_Prime. The initial workaround was to have the function just eliminate three, and start testing for primality at 5. This worked, but was very ugly. This approach did not work for the problem with multiples of 2 however. The function was redisigned using a switch statement to eliminate cases such as 0, 1, 2, and 3. Testing is then started at 5. This is a far cleaner approach, than was used before. Additionally, this method is far easier to expand, such as to add values for it to skip, thus reducing processor requirements. * Redesigned Twin_Prime function The twin prime function had a bug which popped up on multiples of two. Specifically, it reported that 2 was not prime. This was not related to the problems with Is_Prime(), but instead fell out of the data display method used. The function was redesigned to address this issue. * Modified inheritance structure. Previously, all inheritance was public; class 2 was derived from class 1, class 3 derived from class 2 and so on. This worked, but was clunky. Additionally, it was really not a correct approach to inheritance in this problem. The new inheritance structure breaks with this approach. Instead, only operations which are intimatly related are grouped in the same class. Classes and Functions which are similar, and possess an "is-a" relation share a public inheritance. * Calculation of greatest common divisor made a global function. The GCD is needed for several calculations in the class. Unfortunatly, these functions do not share a close enough relation to justify an inheritance structure between their respective classes. The best solution to this problem was to make the GCD function global. Note that this does not invalidate the GCD class, as this class still deals with I/O, and the GCD for multiple inputs. * Main Menu moved to main function Previously, the main menu function was called from the main function. The main menu has been coded directly into the main function in the current version.