Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

숫자의 가장 큰 소인수를 찾는 Java 프로그램

<시간/>

다음은 숫자의 가장 큰 소인수를 찾는 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이라는 변수에 할당됩니다. 이것은 반환됩니다. 메인 함수에서 정수 값을 정의하고 특정 인수로 함수를 호출하여 가장 큰 소인수를 찾습니다.