博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3006解题报告
阅读量:4205 次
发布时间:2019-05-26

本文共 764 字,大约阅读时间需要 2 分钟。

自从开始做POJ后我对1 million就没有恐惧感了,直接分配个这么大的空间来存储素数表。感觉空间换时间是个主旋律。

素数表的生成用素数筛选法(小学竞赛学到的)很快。方法是从2开始,对每个目前还标记为素数的数(初始情况下每个数都标记为素数),把它的所有倍数都标记为非素数。这些扫描过去后,一直没被标记的(即保持为素数的)就是所有的素数。

之后的事情就比较简单了,对等差序列中的每个数一个个去查预先生成的素数表,一直数到第n个素数输出即可。用时32ms。

代码如下:

#include 
using namespace std;const int MAX = 1000000;bool primes[MAX];int main(){ memset(primes, true, MAX); primes[1] = false; for(int i = 2; i < MAX; ++i) { if(primes[i]) { for(int j = 2; i * j < MAX; ++j) { primes[i * j] = false; } } } /* for(int i = 2; i < 1000; ++i) { if(primes[i]) cout<
<<"\t"; } cout<
>a0>>d>>n; if(!a0 && !d && !n) return 0; int cnt = 0; while(true) { if(primes[a0]) { cnt++; if(cnt == n) { break; } } a0 += d; } cout<
<

转载地址:http://axxli.baihongyu.com/

你可能感兴趣的文章
【pwnable.kr】 leg - ARM汇编 PC LR 寄存器 、THUMB汇编
查看>>
【pwnable.kr】 mistake - 运算符优先级
查看>>
wooyun 历史资源汇总
查看>>
【pwnable.kr】 shellshock
查看>>
【pwnable.kr】coin1 二分查找
查看>>
【pwnable.kr】 blackjack - 成为百万富翁(millionaire)
查看>>
【pwnable.kr】lotto - 彩票的中奖概率...
查看>>
【Kernel】漏洞利用技术 Heap Spray检测方法研究
查看>>
【pwnable.kr】cmd1 - putenv() strstr() bypass
查看>>
【pwnable.kr】 cmd2 - bypass with shell builtin commands & etc & system实现
查看>>
Android安全研究经验谈 @retme
查看>>
【pwnable.kr】 uaf - C++虚函数调用过程 - glibc fastbin
查看>>
【pwnable.kr】memcpy - RDSTC指令对齐 - malloc chunk
查看>>
【Kernel】浅谈固件漏洞扫描技术框架—fiber
查看>>
USRP B210 环境搭建与运行
查看>>
修改ubuntu docker timezone
查看>>
【Error 】macOS升级Mojave遇到错误:安装 macOS 时发生错误
查看>>
【Error】解决docker 中文乱码问题
查看>>
TLS协议测试资源汇总
查看>>
【Error】youcompleteme 错误 The ycmd server SHUT DOWN
查看>>