题意:
求几个数的最小公倍数为n的最小和。
思路:
1. 同样的素因子都放在同一个数中
2. 不同的素因子都放在不同的数中
按照这样一个方法,题目就可以解决了。
#include <cstdio> #include <cstring> #include <cstring> #include <cmath> long long int solve(int num) { int n = num; long long int ans = 0; int count = 0; for (int i = 2; i <= (int)sqrt(1.0*num); ++i) { if ((n % i) == 0) { int t = 1; while ((n % i) == 0) n /= i, t *= i;
++count; ans += t; } } if (n != 1 || count == 0) ans += n, ++count; if (count == 1) ++ans; return ans; } int main() { int n, count = 0; while (scanf("%d", &n) && n) { printf("Case %d: ", ++count); printf("%lld\n", solve(n)); } return 0; }