美文网首页
质因子分解模板

质因子分解模板

作者: km15 | 来源:发表于2020-02-10 18:21 被阅读0次

    模板
    思路:
    1、枚举1~sqrt(n)范围内的所有质因子P,判断P是否是n的因子
    (1)如果是因子,那么给fac数组中增加质因子p,并初始化个数为0
    然后只要P还是n的质因子,就不断除以p,同时个数加1,知道P不是因子位置
    (注意,num++是最后的)

    (2)如果P不是因子,直接跳过
    2、如果上面步骤结束后,n不等于1,则说明有而且只有一个大于sqrt(n)(可能是n本身),这是加入fac,并令其个数为1

    时间复杂度:根号n

    struct factor{
        int x;  //x为质因子 
        int cnt;    //cnt为质因子个数 
    }fac[10];
    
    if(n % prime[i] == 0){
        fac[num].x = prime[i];
        fac[num].cnt = 0;
        while(n % prime[i] == 0){
            fac[num].cnt++;
            n /= prime[i];
        } 
        num++
    }
    
    if(n != 1){
        fac[num++].x = n;
        fac[num++].cnt = 1;
    }

    相关文章

      网友评论

          本文标题:质因子分解模板

          本文链接:https://www.haomeiwen.com/subject/dlczxhtx.html