PAT Basic 1007. 素数对猜想
1. 题目描述:
让我们定义\(d_n\)为:\(d_n=p_{n+1}−p_n\),其中\(p_i\)是第\(i\)个素数。显然有\(d_1=1\),且对于\(n>1\)有\(d_n\)是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N
(< \(10^5\)),请计算不超过N
的满足猜想的素数对的个数。
2. 输入格式:
输入在一行给出正整数N
。
3. 输出格式:
在一行中输出不超过N
的满足猜想的素数对的个数。
4. 输入样例:
20
5. 输出样例:
4
6. 性能要求:
Code Size Limit
16 KB
Time Limit
200 ms
Memory Limit
64 MB
思路:
比较直接的思路,写一个判断素数的子函数,然后依次遍历2到N之间的数字进行统计。
这里注意判断素数只用遍历到数字的sqrt()即可,另外用到了stdbool.h用于定义bool类型,现在回看时我都忘了当时还有这操作233。
这种暴力搜索即可满足时间要求,只能感叹计算机的速度之快,另外这个素数对猜想还叫孪生素数猜想,正好刷到李永乐老师讲的关于张益唐的故事,感兴趣的可以去看看~
My Code:
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
bool isPrime(int num);
int main(void)
{
int inputN = 0;
int count = 0;
scanf("%d", &inputN);
for(int i = 2; i <= inputN-2; i++)
{
if(isPrime(i) && isPrime(i+2)) count++;
}
printf("%d", count);
return 0;
}
bool isPrime(int num)
{
for(int i = 2; i <= sqrt(num); i++)
{
if(num % i == 0) return false;
}
return true;
}
标签:PAT,猜想,int,素数,Limit,Basic,1007,include
From: https://www.cnblogs.com/tacticKing/p/17153852.html