让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N
(<105),请计算不超过N
的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N
。
输出格式:
在一行中输出不超过N
的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
#include <stdio.h>
int main(int argc, char* argv[])
{ int arr[20];
int i,j,k=0,n;
scanf("%d",&n);
if(n<=2)
{printf("0");
return 0;
}
for(i=2;i<n;i++){
for(j=2;j<=i;j++)
{ if(i%j==0)
{break;}
else
{
if(j<i-1) continue;
//printf("%d ",i); //输出素数
arr[k++]=i;
break;
}
}
}
int count=0;
for(j=0;j<k;j++)
{
if(arr[j+1]-arr[j]==2)
count++;
}
printf("%d",count);
return 0;
}
优化了输出:
#include <stdio.h>
int main(int argc, char* argv[])
{ int arr[2000];
int i,j,k=0,n;
scanf("%d",&n);
for(i=2;i<n;i++){
for(j=2;j<=i;j++)
{ if(i%j==0)
{break;}
}
//这样输出更合理一点
if(j>i-1)
{arr[k++]=i;
//printf("%d ",i); //输出素数
}
}
int count=0;
for(j=0;j<k;j++)
{
if(arr[j+1]-arr[j]==2)
count++;
}
printf("%d ",count);
return 0;
}