您的位置:首页 > 其它

PAT 乙级 (Basic Level) Practice (中文)1007

2019-02-04 14:27 369 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/arthur01p/article/details/86763182

1007 素数对猜想 (20 分)

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

现给定任意正整数

N
(<10^​5​​ ),请计算不超过
N
的满足猜想的素数对的个数。

输入格式:
输入在一行给出正整数

N

输出格式:
在一行中输出不超过

N
的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

代码

/*直接遍历[2, n-2],查看一个数字和其后相隔一位的数字是否同时为素数*/
#include <cstdio>
#include <cmath>
bool isPrime (int x) {			//素数判断,是素数返回true
if (x<=1) return false ;
int sqr=(int)sqrt(1.0*x) ;
for (int i=2; i<=sqr; i++) {
if (x%i==0) return false ;
}
return true ;
}
int main () {
int n, count=0 ;			//count记录满足条件的数字个数
scanf ("%d", &n) ;
for (int i=2; i<=n-2; i++) {
if (isPrime (i)==true && isPrime (i+2)==true) {
count++ ;
}
}
printf ("%d", count) ;
return 0 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: