UVA10791

题目

UVA10791

做法

分解一下:(n=p_1^{k_1}p_2^{k_2}...p_n^{k_n}),易证(a+b<acdot b(a,b≥2)),把(n)分解成(p_1^{k_1},p_2^{k_2}...,p_n^{k_n}),有几个特判,细节看代码吧

My complete code

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL kase;
inline void Solve(LL n){
	LL ans(0),N(n),cnt(0);
	if(n==1){
		printf("Case %d: 2
",++kase);
		return;
	}
	for(LL i=2;i*i<=N;++i){
		LL num(1);
		if(n%i==0 && n!=1){
			while(n%i==0 && n!=1){
				num*=i,
				n/=i;
			}
			++cnt;
			ans+=num;
		}
	}
	if(n==N || cnt==1)
	    ++ans;
	if(n!=1) ans+=n;
	printf("Case %d: %lld
",++kase,ans);
}
int main(){
	LL n;
	while(scanf("%lld",&n)!=EOF&&n)
	    Solve(n);
	return 0;
}
原文地址:https://www.cnblogs.com/y2823774827y/p/10350896.html