唯一分解定理应用
Posted linhaitai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了唯一分解定理应用相关的知识,希望对你有一定的参考价值。
题意:
输入n,求最少两个数,使得他们的最小公倍数为n,使他们的和最小。
分析:根据唯一分解定理,可以得出 N = p1^n1 * p2^n2 *...* pn^nn
即:当把pi^n1看成整体时和最小。
代码:
#include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> #include<math.h> using namespace std; typedef long long ll; int main() { int t=1; ll n; while(cin>>n) { if(!n) break; printf("Case %d: ",t); t++; if(n==1) { printf("2 "); continue; } ll sum=0,ant=0,temp; int max_=sqrt(n+1); for(int i=2;i<=max_;i++) { int temp=1; if(n%i==0) { ant++; while(n%i==0) { temp*=i; n/=i; } sum+=temp; } // cout<<temp<<endl; if(n==1) break; } // cout<<ant<<endl; if(ant==0) { printf("%lld ",n+1); } else if(ant==1||n!=1) { printf("%lld ",sum+n); } else { printf("%lld ",sum); } } }
以上是关于唯一分解定理应用的主要内容,如果未能解决你的问题,请参考以下文章