作者: xxx时间限制: 1S章节: 一维数组
问题描述 :
孪生素数就是指相差2的素数对,例如3和5,5和7,11和13…。这个猜想正式由希尔伯特在1900年国际数学家大会的报告上第8个问题中提出,可以这样描述:存在无穷多个素数p,使得p + 2是素数。素数对(p, p + 2)称为孪生素数。
现在给定任何正整数 N (< 10 ^ 5), 请你计算不大于 N 的孪生素数的对数。
输入说明
:
你的程序必须从标准输入中读取测试用例。输入文件由几组测试用例组成。每组测试用例占一行, 其中包含一个整数 N。当输入的 N为负数表示结束输入。
输出说明 :
对于每组测试数据,输出一行,包括一个整数,表示不大于 N 的孪生素数的对数
输入范例 :
5
7
13
8
15
-16
输出范例 :
1
2
3
2
3
代码
#include<stdio.h>
#include<math.h>
#include<time.h>
int isprime(int num)
{
if(num<2)
return 0;
for(int i=2;i<=sqrt(num);i++)
{
if(num%i==0)
return 0;
}
return 1;
}
int main()
{
int n,i,k;
while(~scanf("%d",&n))
{
if(n<0)
break;
k=0;
for(i=2;(i+2)<=n;i++)
{
if(isprime(i)&&isprime(i+2))
{
k++;
}
}
printf("%d\n",k);
}
return 0;
}