码迷,mamicode.com
首页 > 其他好文 > 详细

唯一分解定理

时间:2015-05-27 06:17:06      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

紫薯上的两个例题都提到了唯一分解定理

 

算术基本定理,又称为正整数的唯一分解定理,即:每个大于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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!