[素数个数模板] HDU 5901 Count primes】的更多相关文章

#include<cstdio> #include<cmath> using namespace std; #define LL long long ; bool np[N]; int prime[N], pi[N]; int getprime() { ; np[] = np[] = true; pi[] = pi[] = ; ; i < N; ++i) { if(!np[i]) prime[++cnt] = i; pi[i] = cnt; ; j <= cnt &am…
转自:http://blog.csdn.net/chaiwenjun000/article/details/52589457 计从1到n的素数个数 两个模板 时间复杂度O(n^(3/4)) #include <bits/stdc++.h> #define ll long long using namespace std; ll f[],g[],n; void init(){ ll i,j,m; ;m*m<=n;++m)f[m]=n/m-; ;i<=m;++i)g[i]=i-; ;i…
链接:传送门 题意:计算 [ 1 , n ] 之间素数的个数,(1 <= n <= 1e11) 思路:Meisell-Lehmer算法是计算超大范围内素数个数的一种算法,原理并不明白,由于英语太渣看不懂WIKI上的原理,附WIKI链接:Here /************************************************************************* > File Name: hdu5901.cpp > Author: WArobot &g…
题意:给求 1 - n 区间内的素数个数,n <= 1e11. 析:模板题. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream> #include <cstrin…
Count primes 题目连接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5901 Description Easy question! Calculate how many primes between [1...n]! Input Each line contain one integer n(1 <= n <= 1e11).Process to end of file. Output For each case, output…
原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=5901 题意:输入n,输出n以内质数个数 模板题,模板我看不懂,只是存代码用. 官方题解链接:https://async.icpc-camp.org/d/560-2016 /************************************************************ 这个模板我一点都不会,代码是从codeforces上抄的,佚名 pi(i)表示i以内质数的个数 ******…
题意: 计数区间$[1, n](1 \leq n \leq 10^{11})$素数个数. 分析: 这里只介绍一种动态规划的做法. 首先要说一下[分层思想]在动态规划中非常重要,下面的做法也正是基于这一思想. 我们用$dp[i]$表示区间$[1, \frac{n}{i}]$中素数的个数,用$c[i]$表示区间$[1, i]$中素数个数. 那么我们要求的即是$dp[1]$.由于$n$最大是$10^{11}$,因此任何区间内合数的最小素因子不超过$\sqrt{10^{11}}$.为了筛选素数,只需从区…
Count primes Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2625    Accepted Submission(s): 1337 Problem Description Easy question! Calculate how many primes between [1...n]!   Input Each line…
题目链接 题意:求[1,n]有多少个素数,1<=n<=10^11.时限为6000ms. 官方题解:一个模板题, 具体方法参考wiki或者Four Divisors. 题解:给出两种代码. 第一种方法Meisell-Lehmer算法只需265ms. 第二种方法不能运行但是能AC,只需35行. 第一种: //Meisell-Lehmer #include<cstdio> #include<cmath> using namespace std; #define LL long…
参考链接:https://blog.csdn.net/Dylan_Frank/article/details/54428481 #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…