zoukankan      html  css  js  c++  java
  • 阶乘分解质因数

    给定整数N(1<=N<=10^6),试把N!分解成质因数,按照算数基本定理的形式输出分解结果中的pi和ci


    这样分析的话,其实把阶乘算出来再搞是必然超时的

    对于每个质因子p,就相当于1N每个数包含的质因子p的和。在1Nz中包含1个质因子的有N/p个,p2则为N/p2,,,,,以此类推

    所以N!中质因子的个数:

    n/p+n/p2+n/p3.......

    #include <iostream>
    #include <stack>
    #include<algorithm>
    #include <cstring>
    #include <stdio.h>
    #include <string.h>
    #define ll long long
    using namespace std;
    const int N = 1e6 + 5;
    ll n;
    ll vis[N],p[N],c[N];
    ll cnt ;
    int main() {
    
        cin >> n;
        for (ll i = 2; i <= n; i++) {
            if (!vis[i]) {
                ll num = 0;
                for (ll j = i; j <= n; j *= i) num += n / j;
                    p[++cnt] = i;
                c[cnt] = num;
                for (ll j = i * i; j <= n; j += i)//素数筛啊啊啊啊!!保证那个i是个质数
                    vis[j] = 1;
            }
        }
        for (int i = 1; i <= cnt; i++) cout << p[i] << " " << c[i] << '
    ';
        return 0;
    }
    
    为了自己,和那些爱你的人
  • 相关阅读:
    Cannot load php5apache2_4.dll into server
    PHP合并数组
    为什么 echo 3 . print(2) . print(4) . 5 . 'c'的结果是45c2131
    PHP数据类型
    PHP变量
    SSH Key
    VMware Tools安装教程
    nginx: [emerg] getpwnam("nginx") failed
    JS 生成随机数
    JS 操作 cookie
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/14327682.html
Copyright © 2011-2022 走看看