관리 메뉴

밤색모자이크의 개발이야기

Project Euler Problem 3 : 가장 큰 소인수 구하기 본문

Algorithm/Project Euler

Project Euler Problem 3 : 가장 큰 소인수 구하기

밤색모자이크 2017. 6. 18. 21:35


Project Euler 문제를 해답을 포스팅합니다.

※ 주의 : 최적화는 할 수 있는 만큼했습니다. 따라서 속도면에서는 많이 부족합니다.

           문제를 푸는데 목표를 두었고 또한 TDD를 최대한 활용하였습니다.

           몇가지 문제의 경우 TDD를 안한 경우도 있습니다.

           혹시, 최적화 또는 속도 증가에 대한 부분을 지적해주실 분은 너무나도 감사합니다.



Project Euler Problem 3


어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다.

예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.

600851475143의 소인수 중에서 가장 큰 수를 구하세요.








Source Code


Class Main Code

public class Main { 
    public static void main(String [] args) {
        long number = 600851475143l;
        ArrayList<Long> factorization = new ArrayList<Long>(); 
         
        while( number != 1) { 
             
            long i = 2; 
            while(true) { 
                if( (number%i) == 0) { 
                    number /= i; 
                    factorization.add(i); 
                    break; 
                } 
                i++; 
            } 
        } 
     
        for (Long arrayNum : factorization) { 
            System.out.println(arrayNum); 
        } 
    } 
}




Comments