歐拉計劃----https://projecteuler.net/ide
最大質因數
13195的全部質因數爲五、七、13和29。spa
600851475143最大的質因數是多少?.net
public class Problem3 { //接收該輪的質因數 static long x; //判斷是否爲素數 static boolean isPrime(long num) { for(int i=2;i<Math.sqrt(num);i++) { if(num%i==0) { x=i; return false; } } return true; } //計算最大質數 static long cal(long num) { long max=0; while (!isPrime(num)) { if(max<x) { max=x; } num/=x; if(isPrime(num)&&num>max) { max=num; } } return max; } ////大整數處理超過long範圍的數字 //static BigInteger x=new BigInteger("0"); // // ////判斷素數 // static boolean isPrime(BigInteger num) { // boolean boo=true; // for(int i=2;i<Math.sqrt(num.longValue())+1;i++) { // if(num.longValue()%i==0) { // String str=i+""; // x=new BigInteger(str); // if(!isPrime(new BigInteger(i+""))) { // continue; // } // return false; // } // } // return boo; // } // 計算最大質數 // static long cal(BigInteger num) { // BigInteger max=new BigInteger("0"); // while (!isPrime(num)) { // if(max.compareTo(x)==-1) { // max=x; // } // num=num.divide(x); // if(isPrime(num)&&(num.compareTo(max)==1)) { // max=num; // } // } // return max.longValue(); // } public static void main(String[] args) { long start = System.currentTimeMillis(); // System.out.println(cal(new BigInteger("600851475143"))); System.out.println(cal(600851475143l)); long end = System.currentTimeMillis(); System.out.println("runtime:" + (end - start)); } }