Minimum Sum LCM
分析:
很容易想到唯一分解成质数乘积
易错:2,2或者2,4,8的LCM是2,8
所以其实当每个数都互质时才有最大意义,如8*3不能分解成4*6虽然这样更小,但是本来有两个2现在LCM就只有一个2了

#include<iostream> #include<cstring> #include<cstdio> #include<iomanip> #include<stdio.h> using namespace std; //typedef long long LL; const int N = 1e6+10; int cnt, prime[N]; bool vis[N]; void make_prime() { cnt = 0; for(long long i = 2; i <= 100000; i++) { if(vis[i]) continue; prime[++cnt] = i; for(long long j = i*i; j <= 100000; j += i) { //cout << j<<endl; vis[j] = 1; } } } int main() { //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); make_prime(); long long n; long long m; int t = 0; while(1) { t++; scanf("%lld", &n); if(n==0) break; m = n; long long ans = 0; long long num = 0;//记录有多少个因数 for(int i = 1; i <= cnt; i++) { if(n % prime[i]==0) num++; long long tmp = 1; while(n % prime[i] == 0) { n /= prime[i]; tmp *= prime[i]; } if(tmp != 1) ans += tmp; } if(num <= 1) ans = m+1; printf("Case %d: %lld\n", t, ans); } return 0; } /* 12 10 5 0 */