zoukankan      html  css  js  c++  java
  • 算法模板-质因数分解

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

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

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

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

    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;
    }
  • 相关阅读:
    map
    01背包和完全背包 POJ
    并查集 计算节点数量
    set
    map,vector,queue 图 综合运用
    并查集 hdu-1325 Is It A Tree?
    js中的ajax
    java算法
    MySql在Window上的安装
    微信开发账号要求
  • 原文地址:https://www.cnblogs.com/xinwang-coding/p/12704310.html
Copyright © 2011-2022 走看看