primeiterator.java

来自「一些很有用的spring的书籍」· Java 代码 · 共 58 行

JAVA
58
字号
package com.apress.springbook.chapter02;

import org.apache.commons.lang.ArrayUtils;

public class PrimeIterator {
    private int start = 2;
    private int current = 0;
    private int[] primesFound = new int[] { 2, 3 };


    public void setStart(int start) {
        if (start < 2) {
            throw new IllegalArgumentException("Start should not be less than 2!");
        }
        this.start = start;
    }

    public int getNextPrime() {
        if (current < 2) {
            current = 3;
            if (current > start) {
                return current;
            }
        }
        for (;;) {
            current = current + 2;
            int highestToCheck = (int)(current ^ (1/2));
            boolean isPrime = true;

            for (int i = 0; i < primesFound.length; i++) {
                int prime = primesFound[i];
                if (prime > highestToCheck) {
                    break;
                }
                if (current % prime == 0) {
                    isPrime = false;
                    break;
                }
            }


            if (isPrime && current < start) {
                addToPrimesFound();
            } else if (isPrime) {
                break;
            }
        }

        addToPrimesFound ();

        return current;
    }

    private void addToPrimesFound() {
        primesFound = ArrayUtils.add(primesFound, current);
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?