求区间[1,N]的质数的个数(1≤N≤10^11)
2017-09-08 19:30
274 查看
网上看到的黑科技。。。不知道是啥算法,先记个板子
#include<bits/stdc++.h> #define ll long long using namespace std; ll f[340000],g[340000],n; void init() { ll 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(scanf("%I64d",&n)!=EOF) { init(); cout<<f[1]<<endl; } return 0; }
相关文章推荐
- 1311:区间质数统计
- hdoj 1695 GCD 【容斥原理 + 欧拉函数】 【求两个区间里面的所有不重复质数对】
- 1134 -- 区间质数统计
- 《C++刷题笔记》——区间分解质数
- 打印某一区间的素数(质数)
- CF 237C (质数区间)
- 开区间[L, R]中的整数L,R;在此区间中所有质数的个数n
- 求一个区间内所有的质数(C++实现)
- 【SPOJ-PRIME1】Prime Generator【区间质数筛】
- 求指定区间的质数-python版 【Sphere OJ】
- POJ 2689 区间筛选质数
- SPOJ Problem Set 2. Prime Generator 求某区间质数题解
- 洛谷 p1865 区间质数个数
- 素数统计 平移区间筛质数(1e9)
- HDU5317求连续区间类每个数的质因数种类数,每个合数都能它前面的质数相乘得到
- 区间质数查询 luoguP1865
- 数论专题 区间质数数量
- 找出输入区间内的回文质数
- 区间质数
- Uva 10891 Game of Sum(区间DP)