题意

L先生想求出第n个质数(素数)是多少,你能帮助他吗?

数据

T < 70, 0 < n <= 3e6, 输入0表示结束。

输入

1

2

3

4

10

100

0

输出

Case 1: 2

Case 2: 3

Case 3: 5

Case 4: 7

Case 5: 29

Case 6: 541

HDU5901是个求1-1e11内素数个数的模板题,这题可以利用二分+那个模板求解。(用那的第二个板子应该会更快些,但不知道为什么迷之RE,所以只能将就套第一个)

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>#define MAXN 100
#define MAXM 10001
#define MAXP 40000
#define MAX 400000
#define clr(ar) memset(ar, 0, sizeof(ar))
#define read() freopen("lol.txt", "r", stdin)
#define dbg(x) cout << #x << " = " << x << endl
#define chkbit(ar, i) (((ar[(i) >> 6]) & (1 << (((i) >> 1) & 31))))
#define setbit(ar, i) (((ar[(i) >> 6]) |= (1 << (((i) >> 1) & 31))))
#define isprime(x) (( (x) && ((x)&1) && (!chkbit(ar, (x)))) || ((x) == 2))using namespace std;
typedef long long ll;namespace pcf{long long dp[MAXN][MAXM];unsigned int ar[(MAX >> 6) + 5] = {0};int len = 0, primes[MAXP], counter[MAX];void Sieve(){setbit(ar, 0), setbit(ar, 1);for (int i = 3; (i * i) < MAX; i++, i++){if (!chkbit(ar, i)){int k = i << 1;for (int j = (i * i); j < MAX; j += k) setbit(ar, j);}}for (int i = 1; i < MAX; i++){counter[i] = counter[i - 1];if (isprime(i)) primes[len++] = i, counter[i]++;}}void init(){Sieve();for (int n = 0; n < MAXN; n++){for (int m = 0; m < MAXM; m++){if (!n) dp[n][m] = m;else dp[n][m] = dp[n - 1][m] - dp[n - 1][m / primes[n - 1]];}}}long long phi(long long m, int n){if (n == 0) return m;if (primes[n - 1] >= m) return 1;if (m < MAXM && n < MAXN) return dp[n][m];return phi(m, n - 1) - phi(m / primes[n - 1], n - 1);}long long Lehmer(long long m){if (m < MAX) return counter[m];long long w, res = 0;int i, a, s, c, x, y;s = sqrt(0.9 + m), y = c = cbrt(0.9 + m);a = counter[y], res = phi(m, a) + a - 1;for (i = a; primes[i] <= s; i++) res = res - Lehmer(m / primes[i]) + Lehmer(primes[i]) - 1;return res;}
}long long solve(long long n){int i, j, k, l;long long x, y, res = 0;for (i = 0; i < pcf::len; i++){x = pcf::primes[i], y = n / x;if ((x * x) > n) break;res += (pcf::Lehmer(y) - pcf::Lehmer(x));}for (i = 0; i < pcf::len; i++){x = pcf::primes[i];if ((x * x * x) > n) break;res++;}return res;
}int main()
{pcf::init();ll n, ca = 1;while(cin >> n && n){ll l = 2, r = 1e8, ans;while(l <= r){ll mid = (l+r)/2;if(pcf::Lehmer(mid) >= n)r = mid-1, ans = mid;else l = mid+1;}printf("Case %lld: %lld\n", ca++, ans);}return 0;
}

1489: L先生与质数V4(二分+大区间求素数模板)相关推荐

  1. Python 算法之 求素数、质数

    Python 如何求素数.质数 文章目录 Python 如何求素数.质数 素数.质数(重点) 方法一:枚举 方法二:厄拉多塞筛法[埃氏筛] 方法三:线性筛 相关博客

  2. 《ACM算法详解》— 求素数(质数)算法

    (不想做题了.....整理一些资料吧) 求素数(质数)算法 如果一个正整数只有两个因子,1和p,则p为素数 1.根据概念判断 bool isPrime(int n) {if(n < 2) ret ...

  3. ZJCOJ L先生与质数V3/V4 (Meisell-Lehmer算法)

    Problem L: L先生与质数V3/V4(应各位菊苣要求) Time Limit:1 Sec  Memory Limit: 128/16 MB Submit:298  Solved:65 [Sub ...

  4. C---已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。

    已知正整数n是两个不同的质数的乘积,试求出较大的那个质数. 思路:由题意可知,n为两个质数之积,也就是说只要找到一个数能够被n整除,这个数一定是质数!!!2为最小的质数,直接从2开始找,这里通过平方s ...

  5. LightOJ1197 Help Hanzo —— 大区间素数筛选

    题目链接:https://vjudge.net/problem/LightOJ-1197 1197 - Help Hanzo     PDF (English) Statistics Forum Ti ...

  6. python求素数算法_Python程序最多可计算n个质数(使用不同算法)

    python求素数算法 There are various methods through which we can calculate prime numbers upto n. 我们可以通过多种方 ...

  7. 智慧城市、智慧园区、智慧交通、行业经营看板、运行管理大屏、图表模板、公司经营看板、大屏可视化、BI可视化模板、智慧工厂、办公、能源、餐饮、校园、人力资源、行政、汽车、房地产、保险、医院、axure原型

    智慧城市.智慧园区.智慧交通.行业经营看板.运行管理大屏.图表模板.公司经营看板.大屏可视化.BI可视化模板.智慧工厂.办公.能源.餐饮.校园.人力资源.行政.汽车.房地产.保险.医院.axure原型 ...

  8. 计算机系大神和数学系系花,小甜文:《一贱钟情,大神求放过》1v1双C,男主小奶狗,全程高甜...

    最近很多书迷都反应不知道看什么书好,不知不觉的就陷入了书荒的境地,作为老书迷的小编对此也感同身受.今天小编继续给书迷们介绍好看的小说,分分钟让书迷朋友们看上瘾不睡觉!看好的话记得收藏,不怕以后再书荒了 ...

  9. 用excel/WPS制作酷炫数据可视化大屏(附模板)

    大家好,随着数据分析越来越火热,有越来越漂亮的数据分析报表得到了大家的关注.如何制作漂亮的数据大屏看板,成为许多数据分析师的必学课程. 一.思路优先 做数据分析大屏的关键,是整个分析逻辑,在整个分析中 ...

  10. 最快求素数(质数)详解

    我们经常会遇见一些题 要求我们判断一个数是否为素数(质数) 博主在这里讲解一种最快求素数的方法 能大量节约你的运行代码所花费的时间 废话不多说 我们先来了解一下素数的定义: 只能被常数1或自己整除,不 ...

最新文章

  1. APUE(第九章)进程关系
  2. urlencode和quote的用法
  3. 奥鹏C语言专科在线作业答案,奥鹏13春电子科大《C语言(专科)》在线作业3答案...
  4. 平台电商类的增长策略:从用户激励到养成类游戏
  5. SDO_GEOMETRY结构说明
  6. 如果今天完成,ESB会是什么样子?
  7. 关键字驱动测试示例_带有示例的False关键字
  8. asp.net接受表单验证格式后再提交数据_看滴普科技大前端如何玩转el-form-renderer 表单渲染器1.14.0
  9. npm vue安装教程
  10. java 唯一随机数_JAVA随机数
  11. 虚拟机连接本地sql服务器,如何从Mac连接到虚拟机上的本地数据库?(平行线)...
  12. php 安装 bzip2,brew install php bzip2 缺少
  13. is_enabled:selenium中判断元素是否可以使用;is_selected()/is_displayed()
  14. foo java_Java的类型参数通配符到底意味着什么? Foo和Foo ?之间的真正区别是什么?...
  15. 从不重视体检的我拿到了体检报告,我慌了…
  16. linux cgroup、kubernetes limit
  17. matlab pid buck,基于MATLAB的BUCK电路设计与PID闭环仿真
  18. Bone Collector(01背包问题-两种写法)
  19. 用C语言进行公英单位转换方法
  20. SQL SERVER 2008 R2 密钥

热门文章

  1. Hibernate学习总结(一)——hibernate的简单配置使用
  2. Mac 查看本地端口
  3. win10更改hosts文件
  4. 客户端软件升级一般方案
  5. sparksql-分组月度环比同比自动化
  6. Kafka其实就是个“篮子”
  7. 开关电源输出纹波主要来源五个方面?示波器测纹波方法?
  8. 汇编语言||存储单元,存储字长,存储字,存储容量的理解
  9. IC-二进制, 自然数, 有符号数
  10. 【C语言】从字符串中提取正整数和负整数