Sunday 18 September 2016

Chapter 10 Exercise 6, Introduction to Java Programming, Tenth Edition Y. Daniel LiangY.

10.6 (Displaying the prime numbers)
Write a program that displays all the prime numbers less than 120 in decreasing order. Use the StackOfIntegers class to store the prime numbers (e.g., 2, 3, 5, ...) and retrieve and display them in reverse order.

public class StackOfIntegers {

    private int[] elements;
    private int size;

    /** Construct a stack with the default capacity 16 */
    public StackOfIntegers() {
        this(16);
    }

    /** Construct a stack with the specified maximum capacity */
    public StackOfIntegers(int capacity) {
        elements = new int[capacity];
    }

    /** Push a new integer into the top of the stack */
    public int push(int value) {
        if (size >= elements.length) {
            int[] temp = new int[elements.length * 2];
            System.arraycopy(elements, 0, temp, 0, elements.length);
            elements = temp;
        }

        return elements[size++] = value;
    }

    /** Return and remove the top element from the stack */
    public int pop() {
        return elements[--size];
    }

    /** Return the top element from the stack */
    public int peek() {
        return elements[size - 1];
    }

    /** Exercise03_21 whether the stack is empty */
    public boolean empty() {
        return size == 0;
    }

    /** Return the number of elements in the stack */
    public int getSize() {
        return size;
    }
}

public class Exercise_06 {

    public static void main(String[] args) {

        System.out.println("Printing prime numbers under 120.. ");

        StackOfIntegers stack = new StackOfIntegers(20);

        for (int i = 2; i < 120; i++) {
            if (isPrime(i)) {
                stack.push(i);
            }
        }
        while (!stack.empty()) {
            System.out.print(stack.pop() + " ");
        }
    }

    public static boolean isPrime(int n) {

        double range = Math.sqrt(n);
        for (int i = 2; i < range ; i++) {
            if (n % i == 0) return false;
        }
        return true;
    }


}

No comments :

Post a Comment