Java calculation of prime number algorithm optimization and expansion

ckage javaBlog;

import java.util.ArrayList;
import java.util.List;

public class GetprimeNumber {

    /*
     * Get the prime number in the interval [1,n]*/
 public List<Integer> forEachNumberGetprime( int number) {    
        List<Integer> integers = new ArrayList<>();
        for (int i = 1; i < number; i++) if (isPrimeNumber(2, i)) integers.add(i);
        return integers;
    }

    /**
      * Get the prime number from the specified interval
      * */
 public List<Integer> forEachNumberGetprimeToSpecifiedPosition( int startPosition , int endPosition){    
        List<Integer> integers = new ArrayList<>();
        for (int i = startPosition; i < endPosition; i++) if (isPrimeNumber(2, i)) integers.add(i);
        return integers;
    }
    /**
      * Print the prime numbers from 1 to N
      * */
 public void forEachPrintNumberGetprime( int number) {
         for ( int i = 1 ; i < number; i++) if (isPrimeNumber( 2 , i)) System.out .println ( "number = [" + i + "] is a prime number" );    
    }

    /**
      * Print the prime numbers from the specified interval
      * */
 public void forEachPrintNumberGetprimeToSpecifiedPosition( int startPosition , int endPosition){
         for ( int i = startPosition; i < endPosition ; i++) if (isPrimeNumber( 2 , i)). println( "number = [" + i + "] is a prime number" );    
    }

    /**
      * Because no matter how you calculate, non-prime numbers can be calculated by multiplying by 1·9, so in addition to 1 and 2, you only need to continue whether they can be divisible by 2-9
      * This statement uses the extraction of the least common Factor to calculate
      * Of course, an important problem to avoid is that when it is a single-digit number, that is, 1, 2, 3, 5, 7, it directly returns
      * The advantage of this calculation is to avoid the traditional recursion from 1 to n The repeated calculation is more efficient to calculate the prime number in the face of data with more than one thousand digits
      * It also avoids the use of this algorithm (redundant repeated calculation): The method of judging the prime number: use a number to remove 2 to sqrt (this number The square root of ), if it is divisible, it means that the number is not a prime number, otherwise it is a prime number. This algorithm is faster
      * avoids the redundancy of repeated calculations
      */
 public boolean isPrimeNumber( int divisor, int number) {
         if (number = = 1 || number == 2 || number == 3 || number == 5 || number == 7 ) return true ;
            else if (number <= 10) return false;
        else if (divisor == 9) {
            return !(number % 9 == 0);
        } else if (divisor > 9) {
            return isPrimeNumber(2, number);
        } else {
                if (number % divisor == 0 ) return false;
            return isPrimeNumber(divisor + 1, number);
        }
    }

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324894205&siteId=291194637