博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1007 素数对猜想 (20 分)
阅读量:4337 次
发布时间:2019-06-07

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

题目:

让我们定义dn​​为:dn​​=pn+1​​pn​​,其中pi​​是第i个素数。显然有d1​​=1,且对于n>1有dn​​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N(<105​​),请计算不超过N的满足猜想的素数对的个数。

输入格式:

输入在一行给出正整数N

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

思路:

  • 利用素数筛高速存储素数,将全部素数都存储完毕后看是否是素数对,若是则计入。

代码:

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 using namespace std;13 #define MAXN 10000514 int prime[MAXN];15 int su[MAXN];16 17 void isprime()18 {19 int cnt = 0;20 memset(prime, 1, sizeof(prime));21 prime[0] = prime[1] = 0;22 for(int i = 2; i <= MAXN; i++)23 {24 if(prime[i])25 su[cnt++] = i;26 for(int j = i * 2; j <= MAXN; j += i)27 prime[j] = 0;28 }29 }30 31 int main()32 {33 int n, sum = 0;34 isprime();35 scanf("%d", &n);36 for(int i = 1; su[i] <= n; i++)37 {38 // printf("su[%d] = %d\n", i, su[i]);39 if(su[i] - su[i-1] == 2)40 sum++;41 }42 printf("%d\n", sum);43 return 0;44 }45 46 /*47 2048 449 3 5 50 5 751 11 1352 17 1953 */

总结:

  写完代码后测试点2没过,想了想进入循环的条件应该是su[i] <= n而不是su[i] < n,就完美的过了。

转载于:https://www.cnblogs.com/Anber82/p/11227255.html

你可能感兴趣的文章
微信支付之异步通知签名错误
查看>>
2016 - 1 -17 GCD学习总结
查看>>
linux安装php-redis扩展(转)
查看>>
Vue集成微信开发趟坑:公众号以及JSSDK相关
查看>>
技术分析淘宝的超卖宝贝
查看>>
i++和++1
查看>>
react.js
查看>>
P1313 计算系数
查看>>
NSString的长度比较方法(一)
查看>>
Azure云服务托管恶意软件
查看>>
My安卓知识6--关于把项目从androidstudio工程转成eclipse工程并导成jar包
查看>>
旧的起点(开园说明)
查看>>
生产订单“生产线别”带入生产入库单
查看>>
crontab导致磁盘空间满问题的解决
查看>>
java基础 第十一章(多态、抽象类、接口、包装类、String)
查看>>
Hadoop 服务器配置的副本数量 管不了客户端
查看>>
欧建新之死
查看>>
自定义滚动条
查看>>
APP开发手记01(app与web的困惑)
查看>>
笛卡尔遗传规划Cartesian Genetic Programming (CGP)简单理解(1)
查看>>