当前位置: 代码迷 >> 综合 >> PAT--1007 素数对猜想(C语言)
  详细解决方案

PAT--1007 素数对猜想(C语言)

热度:81   发布时间:2023-12-06 10:14:48.0

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

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

输入格式:

输入在一行给出正整数N

输出格式:

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

输入样例:

20

输出样例:

4

解析:利用自定义判断素数的函数,把不大于n的素数全部存在一个数组k中,然后循环遍历测试相邻两个位置是否差2,是的话,计数加1。

#include <stdio.h>
#include <math.h>
long long k[100005];
long long su(long long n){long long i=0,shifou=1;if(n==2) shifou=1;if(n==1){shifou=0;}else if(n>2){for(i=2;i<=sqrt(n);i++){if(n%i==0){shifou=0;break;}}}return shifou;
}
int main()
{long long n=1,m=0,i=0,cnt=0;while(~scanf("%lld",&n)){for(i=1;i<=n;i++){if(su(i)==1) k[m]=i,m++;}for(i=0;i<m-1;i++){if(k[i]==k[i+1]-2) cnt++;}printf("%lld\n",cnt);cnt=0,m=0;	}return 0;
}

  相关解决方案