다음은 숫자의 가장 큰 소인수를 찾는 Java 코드입니다 -
예
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("The largest prime factor of 148592 is "); System.out.println(maxPrimeFactors(val)); val = 890654; System.out.println("The largest prime factor of 890654 is "); System.out.println(maxPrimeFactors(val)); } }
출력
The largest prime factor of 148592 is 251 The largest prime factor of 890654 is 4591
Demo라는 클래스에는 값을 설명하는 정적 함수가 포함되어 있으며 'while' 조건이 정의되어 값 모듈러스 2가 0인지 확인합니다. 값이 0이면 변수(max_prime)에 값 2가 할당됩니다. 그렇지 않으면 오른쪽 비트가 1만큼 이동합니다. 다시 'for' 루프는 3에서 값의 제곱근까지 요소에 대해 반복되고 모든 반복 후에 2씩 증가합니다.
이제 'while' 루프는 값 모듈러스 반복자가 0인지 확인합니다. 그렇다면 현재 반복 중인 값이 변수(max_prime)에 할당됩니다. 값을 반복된 값으로 나눕니다. 이 값이 2보다 크면 이 값(max_prime)이 max_prime이라는 변수에 할당됩니다. 이것은 반환됩니다. 메인 함수에서 정수 값을 정의하고 특정 인수로 함수를 호출하여 가장 큰 소인수를 찾습니다.