11 Jan 2012

Create a separate class file for each problem, and email all files as attachments to me at jal2016@email.vccs.edu with subject CSC 201 HW2.

Due Thursday, Jan 19.

### 1

The infinite sum $1 + \frac{1}{1!} + \frac{1}{2!} + \frac{1}{3!} + \frac{1}{4!} + \cdots$ converges to the mathematical constant $e \approx 2.71828183,$ the second most important trancendental number. Here $n!$ ("n factorial") represents the number $1 \times 2 \times \cdots \times n$, so $1! = 1$, $2! = 2$, $4! = 24$, etc.

Write a program (in a class called ExpApprox) that prints the first 20 partial sums (meaning that it prints the sum of the first 1 terms, then the sum of the first 2 terms, ..., on up to the sum of the first 20 terms).

Hints: the 5th sum, for example, can be obtained from the 4th sum just by adding on the next summand (in this case, $\frac{1}{4!}$). To compute each summand, the 5th summand is obtained from the 4th summand by dividing by 4, and the 6th is obtained from the 5th by dividing by 5, etc. Here's a possible outline:

public class ExpApprox {
public static void main(String[] args) {
double term = 1.0;  // current summand
double sum = 0.0;   // current total
for (int n = 0; n < 20; n = n + 1) {
// Update term to current summand value
// Update sum to the current total
// Print sum
}
}
}


### 2

Write a program (in a class called Age) that asks the user's birthdate, and then prints his or her age.

Hints: you can use the template shown below. The Scanner class can wrap up a more basic object (like the standard input object System.in); it provides a lot of useful methods like nextLine (which returns the next line typed by the user as a String), and nextInt (which returns the next integer typed by the user, as an int). You'll need to decide on the best way to input a birthdate, and how to determine age based on the current date; it's a little trickier than just subtracting years, since you have to worry about months as well.

import java.util.Scanner;
import java.util.Calendar;

public class Age {
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
int currentYear = now.get(Calendar.YEAR);
int currentMonth = now.get(Calendar.MONTH) + 1;
int currentDay = now.get(Calendar.DAY_OF_MONTH);

Scannner input = new Scanner(System.in);
// Print appropriate prompts, and use input to read birthday.
// Then determine age based on current date.
}
}


### 3

Write a program (in a class called Primes) that prints all the prime numbers less than 1000.

Hints: a basic way to test if a number is prime is to check for all possible divisors. To check if x is divisible by d, you can use the modulus operator (%): x % d gives the remainder when x is divided by d.