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); } }
Java calculation of prime number algorithm optimization and expansion
Guess you like
Origin http://43.154.161.224:23101/article/api/json?id=324894205&siteId=291194637
Recommended
Ranking