阶乘分解

作者: dachengquan | 来源:发表于2020-08-04 23:27 被阅读0次

题目链接:阶乘分解
分解阶乘的质因数。
将1~N每个数,分别分解质因数合并的时间复杂度是O(N\sqrt N)
对于N!来说假设p<N,并且p是质数。那么N!以p为质因数的数有,p,2*p,...,\lfloor \frac N p \rfloor*p一共是\lfloor \frac N p \rfloor个,每个都至少包含了一个质因子p。至少包含两个质因数的是\lfloor \frac N {p^2} \rfloor\lfloor \frac N {p^2} \rfloor最少包含两个质因子p,不过其中一个质因子已经被\lfloor \frac N p \rfloor统计过一次。
N!中质因子p的个数是\lfloor \frac N p \rfloor+\lfloor \frac N {p^2} \rfloor+\lfloor \frac N {p^3} \rfloor+...
时间复杂度大概是O(n\log n)

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N = 1000010;
vector<int> p;
bool v[N];
void get_prime(int n){
    for(int i = 2;i<=n;i++){
        if(v[i]==0)p.push_back(i);
        for(int j = 0;i*p[j]<=n;j++){
            v[i*p[j]]=1;
            if(i%p[j]==0)break;
        }
    }
}
int main(){
    
    int n;
    cin>>n;
    get_prime(n);
    for(int i = 0;p[i]<=n&&i<p.size();i++){
        int ans = 0;
        for(int k = n;k;k/=p[i]){
            ans+=k/p[i];
        }
        cout<<p[i]<<" "<<ans<<endl;
    }
}

相关文章

  • 阶乘分解

    题目链接:阶乘分解分解阶乘的质因数。将1~N每个数,分别分解质因数合并的时间复杂度是。对于N!来说假设p

  • 质数刷题

    质数距离如何快速求解一个区间的所有质数。阶乘分解快速对整个阶乘质因数分解。判定1e18的质数直接使用Miller-...

  • JS基础---习题阶乘和计算

    1.求1!+2!+3!+...+10!的和?这是数学中的阶乘和计算! 2.对一个整数分解质因数。例如: 90 = ...

  • Java 实现阶乘算法

    Java 实现阶乘算法 阶乘算法如下: 以下列出 0 至 20 的阶乘: 0!=1,(0 的阶乘是存在的) 1!=...

  • 专题:递归与累加阶乘

    递归实现累加和阶乘 累加核心代码: 阶乘的核心代码: 阶乘的非递归实现思路: 阶乘的非递归实现核心代码:

  • Factorial

    使用循环计算阶乘 使用递归计算阶乘

  • 小练习 python3 阶乘运算

    运行结果: 0的阶乘是:= 01 的阶乘是:1= 12 的阶乘是:2X1= 23 的阶乘是:3X2X1= 64 的...

  • 求n的阶乘中含有多少个2及其变换问题

    在编程中遇到很多Math相关的问题都可以转换为求n的阶乘中含有某个数的个数;例如这道: 这道题的解题关键是:分解因...

  • python递归求阶乘的方法

    python递归求阶乘的方法 阶乘:例如 5! 指的是“5的阶乘”,即 5! = 1*2*3*4*5。 “递归”就...

  • Java大数阶乘

    阶乘定义:一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘...

网友评论

    本文标题:阶乘分解

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