📜  Java程序查找一个数的最大素数

📅  最后修改于: 2022-05-13 01:58:09.254000             🧑  作者: Mango

Java程序查找一个数的最大素数

给定一个正整数 \'n\'( 1 <= n <= 10 15 )。找出一个数的最大质因数。

Input: 6
Output: 3
Explanation
Prime factor of 6 are- 2, 3
Largest of them is \'3\'

Input: 15
Output: 5
Java
// Java Program to find largest
// prime factor of number
import java.io.*;
import java.util.*;
  
class GFG {
  
// function to find largest prime factor
static long maxPrimeFactors( long n)
{
    // Initialize the maximum prime
    // factor variable with the 
    // lowest one
    long maxPrime = -1;
  
    // Print the number of 2s
    // that divide n
    while (n % 2 == 0) {
        maxPrime = 2;
          
        // equivalent to n /= 2
        n >>= 1; 
    }
  
    // n must be odd at this point,
    // thus skip the even numbers 
    // and iterate only for odd
    // integers
    for (int i = 3; i <= Math.sqrt(n); i += 2) {
        while (n % i == 0) {
            maxPrime = i;
            n = n / i;
        }
    }
  
    // This condition is to handle 
    // the case when n is a prime 
    // number greater than 2
    if (n > 2)
        maxPrime = n;
  
    return maxPrime;
}
  
// Driver code
public static void main(String[] args)
{
    Long n = 15l;
    System.out.println(maxPrimeFactors(n));
  
    n = 25698751364526l;
    System.out.println(maxPrimeFactors(n));
}
}
  
// This code is contributed by Gitanjali



输出:
5
328513

时间复杂度: \text{O}(\sqrt{n})
辅助空间: \text{O}(1)

有关详细信息,请参阅有关查找数字的最大素数的完整文章!