思路: 把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);
}
}
}