【2016-沈阳赛区网络赛-J】大素数模板(Count primes,uva 5901)
2016-09-23 10:07
519 查看
http://blog.csdn.net/chaiwenjun000/article/details/52589457
#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;
}
#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;
}
相关文章推荐
- HDU 5901 Count primes (1e11内的素数个数) -2016 ICPC沈阳赛区网络赛
- HDU 5901 Count primes (2016 acm 沈阳网络赛)
- HDU 5901 Count primes 2016年沈阳网络赛 (Lehmer素数计数)
- [素数个数模板] HDU 5901 Count primes
- HDU 5901 Count primes (大素数模板题)
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5901 Count Primes (模板 + 数论知识)★
- HDU 5901 Count Primes (模板 + 数论知识)——2016 ACM/ICPC Asia Regional Shenyang Online
- HDU-5901-Count primes(大素数模板)
- HDU --- 5901 Count primes 【求1e11内的素数模板题】
- HDU 5901 Count primes(求1e11内素数个数模板)
- hdu 5901 Count primes (大素数模板)
- HDU 5901 Count primes (求1e11内素数个数、模板题....)
- hdu-5901-Count primes(求1~n内素数个数)
- hdu 5892 List wants to travel 2016ACM/ICPC沈阳赛区网络赛1001
- 2016沈阳赛区网络赛(1007,1009)
- 【2016-沈阳赛区网络赛-I】区间DP(QSC and Master,hdu 5900)
- HDU 5878 I Count Two Three (打表+二分查找) -2016 ICPC 青岛赛区网络赛
- HDU 5901-Count primes(1e11以内素数的个数)
- HDOJ 5901 Count primes 【2016年沈阳网赛】素数打表
- 【2016-沈阳赛区网络赛-G】记忆化搜索,数位DP(odd-even number,hdu 5898)