zoukankan      html  css  js  c++  java
  • P2043 质因子分解(阶乘的质因数分解)

    P2043 质因子分解

    对$n!$进行质因数分解的一种高效算法

    首先,筛出$<=n$的素数

    蓝后,对$n$反复除以$prime$,同时$cnt+=n/prime$

    $n!$中含有该$prime$的个数即为$cnt$

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #define re register
     5 using namespace std;
     6 #define N 10002
     7 int n,v[N],pri[N],cct;
     8 int main(){
     9     scanf("%d",&n);
    10     for(re int i=2;i<=n;++i){
    11         if(!v[i]) v[i]=pri[++cct]=i;
    12         for(re int j=1;j<=cct;++j){
    13             if(pri[j]>i||pri[j]*i>n) break;
    14             v[pri[j]*i]=pri[j];
    15         }
    16     }
    17     for(re int i=1;i<=cct;++i){
    18         int cnt=0;
    19         for(re int j=n;j;j/=pri[i]) cnt+=j/pri[i];
    20         printf("%d %d
    ",pri[i],cnt);
    21     }return 0;
    22 }
    View Code
  • 相关阅读:
    hdu 2137
    hdu 2059
    hdu 2175
    hdu 1297
    hdu 1702
    hdu 1212
    hdu 1397
    [转]常见的碱性食品有哪些?
    [转]C#反射
    每个人都有自己的未来
  • 原文地址:https://www.cnblogs.com/kafuuchino/p/9889054.html
Copyright © 2011-2022 走看看