(待更新理解)(数值过大素数计数模版)HDU 5901 Count primes

来源:互联网 发布:photosynth替代软件 编辑:程序博客网 时间:2024/06/13 05:51

题意

思路

代码

#include<iostream>using namespace std;long long int f[340000],g[340000],n;void init(){    long long int i,j,m;    for(m=1;m*m<=n;++m){        f[m]=n/m-1;    }    for(i=1;i<=m;++i){        g[i]=i-1;    }    for(i=2;i<=m;++i){        if(g[i]==g[i-1])            continue;        for(j=1;j<=min(m-1,n/i/i);++j){            if(i*j<m)                f[j]-=f[i*j]-g[i-1];            else                f[j]-=g[n/i/j]-g[i-1];        }        for(j=m;j>=i*i;--j){            g[j]-=g[j/i]-g[i-1];        }    }}int main(){    while(cin>>n){        init();        cout<<f[1]<<endl;    }    return 0;}
0 0