1007. 素数对猜想 (20)

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

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

输入格式:每个测试输入包含1个测试用例,给出正整数N。

输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

关于素数判断函数:

  第1种:按照定义进行判断,这种函数在N(<105)很大时,计算量非常大,在提交程序后显示“运算超时”:

 bool prime(int num){
int i;
if(num==) return false;
for(i=;i<num;i++)
if(num%i==) return false;
return true;
}

  第2种:在N的平方根范围内进行判断,大大减小运算量,故使用此函数:

 bool prime(int num){
int i,k;
if(num==) return false;
k=int(sqrt(num));
for(i=;i<=k;i++)
if(num%i==) return false;
return true;
}

程序设计:

方法一:

  1.求出不超过N范围内的所有素数,并将其存储在数组prime_num[]中,由于105范围内一共有9592个素数,所以数组元素个数不应小于9592

  2.对prime_num[]数组中的元素进行比较,求出后一位比前一位数值大2的对数

C++ 代码如下:

 #include <bits/stdc++.h>
using namespace std;
bool prime(int num){
int i,k;
if(num==) return false;
k=int(sqrt(num));
for(i=;i<=k;i++)
if(num%i==) return false;
return true;
}
int main() {
int prime_num[];
int i,j=,count=;
long n;
cin>>n;
for(i=;i<=n;i++){
if(prime(i)){
prime_num[j]=i;
j++;
}
else continue;
}
for(i=;i<j-;i++)
if(prime_num[i+]-prime_num[i]==) ++count;
cout<<count;
system("pause");
return ;
}

C++ Code 1

方法二:

  当N>2时,所有的素数均为奇数,故只需求出相邻奇数中全为素数的对数即可

C++ 代码如下:

 #include <bits/stdc++.h>
using namespace std;
bool prime(int num){
int i,k;
if(num==) return false;
k=int(sqrt(num));
for(i=;i<=k;i++)
if(num%i==) return false;
return true;
}
int main() {
int i,count=;
long n;
cin>>n;
for(i=;i+<=n;i+=){
if(prime(i))
if(prime(i+)) count++;
else continue;
}
cout<<count;
system("pause");
return ;
}

C++ Code 2

【PAT】1007. 素数对猜想 (20)的更多相关文章

  1. PAT 1007. 素数对猜想 (20)

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

  2. PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数

    PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ...

  3. PAT乙级 1007. 素数对猜想 (20)

    1007. 素数对猜想 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 让我们定义 dn 为:dn = ...

  4. [C++]PAT乙级1007.素数对猜想 (20/20)

    /* 1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷 ...

  5. PAT (Basic Level) Practice (中文)1007 素数对猜想 (20分)

    1007 素数对猜想 (20分) 让我们定义d​n为:dn = pn+1 − pn,其中p​i是第i个素数.显然有d1 = 1,且对于n > 1有dn是偶数."素数对猜想"认 ...

  6. PAT-乙级-1007. 素数对猜想 (20)

    1007. 素数对猜想 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 让我们定义 dn 为:dn = ...

  7. PAT 1007 素数对猜想(20)

    1007 素数对猜想(20 分) 让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数."素 ...

  8. PAT (Basic Level) Practise (中文)- 1007. 素数对猜想 (20)

    http://www.patest.cn/contests/pat-b-practise/1007 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对 ...

  9. PAT Basic 1007 素数对猜想 (20 分)

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

随机推荐

  1. 51nod 1684 子集价值

    lyk最近在研究位运算. 它发现除了xor,or,and外还有很多运算. 它新定义了一种运算符“#”. 具体地,可以由4个参数来表示. ai,j表示 i#j. 其中i,j与a的值均∈[0,1]. 当然 ...

  2. php 修改图片分辨率

    <?php function resize_image($file, $w, $h, $crop=FALSE) { list($width, $height) = getimagesize($f ...

  3. CSUST 四月选拔赛个人题解

    这场比赛演的逼真,感谢队友不杀之恩 总结:卡题了赶紧换,手上捏着的题尽快上机解决 http://csustacm.com:4803/ 1113~1122 1113:六学家 题意:找出满足ai+aj=a ...

  4. valgrind检查C/C++内存泄漏

    valgrind --tool=memcheck --leak-check=full ./httptest  valgrind --tool=memcheck --leak-check=full -- ...

  5. bzoj 2530 [Poi2011]Party 构造

    2530: [Poi2011]Party Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 364  Solved:  ...

  6. Qt ------ Thread Affinity (QObject::moveToThread: Cannot move objects with a parent)

    简单的说,每个QObject的对象,都和某个创建对象所在的线程关联,如果把对象通过 moveToThread 移动到其他线程,这个对象不能有父对象,否则会出现 QObject::moveToThrea ...

  7. 深入分析Java中的 == 和equals

    关于Java中的 == 和equals的解释请看这位博主的文章 :http://www.cnblogs.com/dolphin0520/p/3592500.html 以下是我对这篇文章的一些扩展. 对 ...

  8. Windows下的包管理器Chocolatey

    参考文档: https://www.jianshu.com/p/831aa4a280e7 https://www.jianshu.com/p/abaa0e8c261f

  9. CSS常用标签-手打抄录-感谢原未知博主-拜谢了

    CSS常用标签   CSS常用标签 一 CSS文字属性 color : #999999; /*文字颜色*/ font-family : 宋体,sans-serif; /*文字字体*/ font-siz ...

  10. JAVA多线程基础学习一:基础知识

    我们知道多线程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 一.线程基本概念 1 线程:进程中负责程序执行的执行单元(执行 ...