Programming and Computer Science in Java:
Test #1:   Lab Programs 1-10
    David Kosbie, 2002-2003
See Course Home Page

Test Date:  Tue and Wed, Mar 4-5, 2003

 This document is also available as test1.doc.

Name: _________________________________

Programming and Computer Science:  Test #1
March 4
-5, 2003

 Part I:  Written:  75 minutes

Question 1:  Write "Hello World" in Java.

Question 2: What will the following code fragment print out?  Show your work (for partial credit)!  Note:  To help you show your work, the lines are numbered, and a table is provided where, for each line on which x or y is changed, you can list the line number and the new values of x and y.

      1   int x = 3, y = 15;                Line#  x value  y value
      2   while ((x % y) < (y / x))           1       3        15
      3   {
      4     x = x + 1;
      5     y = y - x;
      6   }
      7   System.out.println(x + "," + y);

Question 3: What will the following code fragment print out?  Show your work (for partial credit)!

      1   int x = -1, y = 6;                Line#  x value  y value
      2   while (true)                        1      -1        6
      3   {
      4     x = x + y/2;
      5     if (((x*y) % 10) == 0)
      6     {
      7           break;
      8     }
      9     while (x <= y)
      10    {
      11          x = x + 3;
      12    }
      13    y = y + 2;
      14  }
      15  System.out.println(x + "," + y);

Question 4: What will the following code fragment print out?  Show your work (for partial credit)!

      1  int x = 2, y = -2, z = 0;           Line#  x val  y val  z val
      2  while (Math.abs(Math.max(y,z)) < x)    1     2     -2      0
      3  {
      4     if (x%2 == 0)
      5     {
      6           z = z - 3;
      7           x = x + 1;
      8     }
      9     else
      10    {
      11          y = y - 3;
      12    }
      13  }
      14  System.out.println(x + "," + y + "," + z);

Question 5: What will the following code fragment print out?  Show your work (for partial credit)!  Note: obviously, in this case, you will not list every change in the value of x.  You have to analyze the pattern to figure out the final value of x.

      1   int x = 1;                             Line#  x value
      2   while (((x%500) + (x/500)) < 500)        1        1
      3   {
      4     x = x + 1;
      5   }
      6   System.out.println(x);

Question 6:  Write a Java program which repeatedly reads in an integer n, halting if n is negative, and otherwise prints out the sum of the integers from 0 to n, exactly as follows:

                Enter an integer [<0 to exit]: 3
                0 + 1 + 2 + 3 = 6
               
Enter an integer [<0 to exit]: 5
               
0 + 1 + 2 + 3 + 4 + 5 = 15
               
Enter an integer [<0 to exit]: -1
               
Goodbye!

Note that your program must work exactly as the example.

Question 7:  A "Pythagorean Triple" is a point (a,b,c) where a2 + b2 = c2.  (3,4,5) is such a triple, because 32 + 42 = 9 + 16 = 25 = 52.  Write a Java program which reads in an integer n and prints out all the Pythagorean Triples (a,b,c) where a, b, and c are all less than n.  Restrict your output to the cases where (a <= b) and (b <= c), so you would output (3,4,5) but not (3,5,4) or (4,5,3) for example.
Hint:  use nested while loops to test every possible combination of a, b, and c in the legal range.


End of Part I.

Do not proceed to Part II until instructed to do so.


Part II:  Computer:  75 minutes

Question 8/9/10 (triple weighted):  Goldbach's Conjecture states that every even number larger than 2 is the sum of two prime numbers.  Interestingly, nobody has ever proven it to be true, but it sure seems to be true.  Consider the following examples:

                4 = 2 + 2
               
6 = 3 + 3
               
8 = 3 + 5
               
10 = 3 + 7
               
12 = 5 + 7
               
14 = 3 + 11
               
16 = 3 + 13
               
...

Write a Java program which empirically confirms Goldbach's Conjecture by repeatedly reading in an even integer n (halting when n < 4) and printing out that number as the sum of two primes (of course, your program must find the primes which sum to n).  If n is odd, just print out that it is odd.

Here is exactly how your program should work:

                Enter an even integer [<4 to exit]: 10
                10 = 5 + 5
               
Enter an even integer [<4 to exit]: 17
                17 is odd.  Please try again.
                Enter an even integer [<4 to exit]: 16
                16 = 3 + 13
                Enter an even integer [<4 to exit]: 0
                Goodbye!

Hint:  for each number p which is less than n, check if p is prime, then check if (n-p) is also prime.  If both are true, then p and (n-p) are the two primes which sum to n, because p + (n-p) == n.

Hint:  Even if you cannot solve this problem outright, write as much of the solution as you can!


See Course Home Page