Dưới đây là mã Java tìm thừa số nguyên tố lớn nhất của một số:
Ví dụ
import java.io.*;
import java.util.*;
public class Demo{
static long maxPrimeFactors(long val){
long max_prime = -1;
while (val % 2 == 0) {
max_prime = 2;
val >>= 1;
}
for (int i = 3; i <= Math.sqrt(val); i += 2){
while (val % i == 0){
max_prime = i;
val = val / i;
}
}
if (val > 2)
max_prime = val;
return max_prime;
}
public static void main(String[] args){
int val = 148592;
System.out.println("Thừa số nguyên tố lớn nhất của 148592 là: ");
System.out.println(maxPrimeFactors(val));
val = 890654;
System.out.println("Thừa số nguyên tố lớn nhất của 890654 là: ");
System.out.println(maxPrimeFactors(val));
}
}
Kết quả
Thừa số nguyên tố lớn nhất của 148592 là 251 Thừa số nguyên tố lớn nhất của 890654 là 4591
Lớp Demo chứa hàm tĩnh nhận giá trị, điều kiện while kiểm tra giá trị mod 2 bằng 0. Nếu 0, biến max_prime gán 2. Ngược lại, dịch phải 1 bit. Vòng for lặp từ 3 đến căn bậc hai giá trị, tăng 2 mỗi lần.
Vòng while kiểm tra giá trị mod iterator bằng 0. Nếu đúng, max_prime gán giá trị iterator hiện tại. Giá trị chia cho iterator. Nếu giá trị lớn hơn 2, max_prime gán giá trị này. Trả về. Trong main, số nguyên định nghĩa và thừa số nguyên tố lớn nhất tìm bằng cách gọi hàm.