首页 > 其他 > 详细

唯一分解定理

时间:2015-05-27 06:16:40      阅读:232      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!