題目3:找出一個合數的最大質數因子

13195的質數因子有5,7,13和29.

600851475143的最大質數因子是多少?

 

原題目鏈接:Problem 3


這題不能暴力算,算好久,需要用個遞歸


public class Problem3 {

    //answer 6857
    public static void main(String[] args) {
        Long c = 600851475143l;
        System.out.println(getPrime(c));
    }

    public static long getPrime(long value) {

        for (long i = 2; i < value; i++) {
            long remainder = value % i;
            if (remainder == 0) {
                long vv = value / i;
                if (isPrime(vv) && !isPrime(i)) {
                    return vv;
                } else if (isPrime(vv) && isPrime(i)) {
                    return vv > i ? vv : i;
                } else {
                    return getPrime(vv);
                }

            }
        }
        return 1;
    }

    public static Boolean isPrime(long value) {
        Boolean flag = true;
        for (int i = 2; i <= Math.sqrt(value); i++) {
            if (value % i == 0) {
                flag = false;
                break;
            }
        }
        return flag;
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章