您的位置:首页 > 其它

uva 10791 - Minimum Sum LCM

2011-04-02 00:11 330 查看
漏洞百出!!

#include <iostream>
#include <cmath>
#include <string>
using namespace std;

int gcd(int a, int b) {
	return b == 0 ? a : gcd(b, a % b);
}
//#define TEST
int main() {
#ifdef TEST
	freopen("input.txt", "r", stdin);
#endif
	int n;
	int t = 1;
	while(cin >> n && n != 0) {
		cout << "Case " << t++ << ": ";
		if(n == 1) {
			cout << 2 << endl;
			continue;
		}
		if(n == 2147483647) {
			cout << 2147483648 << endl;
			continue;
		}
		int m = sqrt((float)n);
		int ans = 0;
		int tmpn = n;
		int count = 0;
		for(int i = 2; i <= m; i++) {
			if(tmpn % i == 0) {
				count++;
				int tmp = 1;
				while(tmpn % i == 0) {
					tmp *= i;
					tmpn /= i;
				}
				ans += tmp;
			}
		}
		if(tmpn == n) cout << 1 + n << endl;
		else {
			if(tmpn != 1) ans += tmpn;
			//素因子只有一个的情况!!omg。
			else if(count == 1) ans++;
			cout << ans << endl;
		}
	}
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: