首页 > 编程语言 > 详细

算法模板-质因数分解

时间:2020-04-15 14:27:36      阅读:60      评论:0      收藏:0      [点我收藏+]

任何一个整数,都可以分解为一个或者多个质因数的乘积,这样的分解叫做质因数分解。

 

程序实现的核心是贪心,即用当前最小的质数去判断是该数的因数,是就记录下来。

并且在该数中除去这个质数,直到这个质数不能整除为止,因为我们知道一个合数可以整除一个数,代表他的质因数都可以整除那个数,而他的质因数都比他小,所以这么做保证了合数不会被选进来。

 

计算一个数的质因数分解并保存:

int resolve(ll x,ll *ans)
{
    int tot=0;
    for(ll i=2;i*i<=x;i++){
        if(x%i==0)ans[tot++]=i;
        while(x%i==0)x/=i;
    }
    if(x>1)ans[tot++]=x;
    return tot;
}

 

输出一个数中的最大质因数:

typedef unsigned long long ll;
ll resolve(ll x)
{
    ll ans;
    for(ll i=2;i*i<=x;i++){
        if(x%i==0)ans=i;
        while(x%i==0)x/=i;
    }    
    if(x>1)ans=x;
    return ans;
}

 

算法模板-质因数分解

原文:https://www.cnblogs.com/xinwang-coding/p/12704310.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!