马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 八戒253 于 2021-5-21 18:36 编辑
- #include <stdio.h>
- #include <stdbool.h>
- int main(void)
- {
- bool flag = false;
- int su_shu[1000];
- int N,i,j,k=1;
- int count = 0;//用来记录最后的数
- scanf("%d",&N);
- if(N!=1)
- su_shu[0] = 2;
- for(i=3;i<=N;i++)
- {
- for(j=2;j<i;j++)
- {
- if(i%j == 0)
- {
- flag = true;
- break;
- }
- }
- if(!flag)
- {
- su_shu[k++] = i;
- }
- flag = false;
- }
-
- for(i=0;i<k-1;i++)
- {
- if(su_shu[i+1]-su_shu[i]==2)
- {
- count++;
- }
- }
- printf("%d",count);
- return 0;
- }
复制代码 PTA
让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数。显然有d​1​​=1,且对于n>1有d​n​​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。 现给定任意正整数N(<),请计算不超过N的满足猜想的素数对的个数。 输入格式:输入在一行给出正整数N。 输出格式:在一行中输出不超过N的满足猜想的素数对的个数。 输入样例:20
输出样例:4
该如何解决?? 感谢帮助!!!
- #include<stdio.h>
- #include<math.h>
- int IsPrime(int n) // 判断素数的函数
- {
- int i;
- for(i=2;i<=sqrt(n);i++) // 高效求素数的范围 i<=sqrt(n)
- {
- if(n%i==0)
- return 0;
- }
- return 1;
- }
- int main()
- {
- int N;
- scanf("%d",&N);
- if( N>0 && N<(int)pow(10, 5) )
- {
- int i, count=0; // const 用来记录"相邻且差为2的素数"的个数
- for(i=3;i<=N-2;i+=2) // 每组的跨度
- {
- if( IsPrime(i)&&IsPrime(i+2) ) // 相邻且差为2的素数
- count++;
- }
- printf("%d\n",count);
- }
- return 0;
- }
复制代码
|