标签:
紫薯上的两个例题都提到了唯一分解定理
算术基本定理,又称为正整数的唯一分解定理,即:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式。
证明见wiki:http://zh.wikipedia.org/wiki/%E7%AE%97%E6%9C%AF%E5%9F%BA%E6%9C%AC%E5%AE%9A%E7%90%86
下面给出计算唯一分解式的代码
int v[100];//唯一分解式中的各个素数 int vtop=0;//素数的种类 int e[100];//每一种素数的个数 //例如n=12,唯一分解式为2^2*3^1=12,v={2,3},vtop=2,e={2,1}; int decPrime(int n){ int m=sqrt(n+0.5); for (int i=2;i<m&&n>1;i++){ if (!(n%i)){ int cnt=0; v[vtop]=i; while (!(n%i)&&n>1){ cnt++;n/=i; } e[vtop++]=cnt; } } if (n>1) {v[vtop]=n;e[vtop++]=1;} for (int i=0;i<vtop;i++){ cout<<v[i]<<" "<<e[i]<<endl; } } int main(){ int n; cin>>n; decPrime(n); }
利用这段代码解决了UVa10791
标签:
原文地址:http://www.cnblogs.com/acbingo/p/4532254.html