1. 程式人生 > >UVA10791最小公倍數的最小和_分解定理

UVA10791最小公倍數的最小和_分解定理

思路: 把n分解為質素的冪 然後相加

1.需要注意: 32 = 2^4; 此時一次性分解了32 所以和為33
2.當n沒有被分解, 在2~sqrt(n)沒有可除的數, 說明n為質素
3.當n沒有被分解完, 74=2*37; 2~sqrt(74); 還要把剩餘的n加上.

 

java code:


import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		
		
		Scanner sc = new Scanner(System.in);
		int cas = 1;
		while(sc.hasNextLong()){
			
			long n = sc.nextLong();
			if(n == 0) break;
			int len = (int)Math.sqrt(n+0.5);
			
			long sum = 0, cnt = 0;
			for(int i = 2; i<=len; i++){
				
				if(n%i == 0){
					long f = 1;
					cnt ++;
					while(n%i == 0){
						
						n/=i;
						f*=i;
					}
			
					sum += f;
					if(n == 1)
						break;
				}
			}
			if(n != 1 || cnt == 0){
				sum += n;
				cnt ++;
			}
			if(cnt == 1)
				sum++;
			System.out.println("Case "+cas++ + ": "+ sum);
		}
	}
}