还算比较水的一个数学题 求因子的最小和 总是用小的数去除 注意特判 是用int不行哦........
#include#include int main(){ long n, ca = 1; while(scanf("%ld",&n) == 1 && n) { long k = n; long ans = 0, flag = 0; for(int i = 2; i <= sqrt(n); i++) { if(k % i == 0) { flag++; int tmp = 1; while(k % i == 0) { tmp *= i; k /= i ; } ans += tmp; } } printf("Case %ld: ",ca++); if(!flag) printf("%ld\n",1+n); else { if(k != 1) ans += k; else if(flag == 1) ans++; printf("%ld\n",ans); } } return 0;}