题目描述:
孪生素数的百度百科定义为:孪生素数就是指相差2的素数对,例如3和5,5和7,11和13…。
输入
输入有多组数据,每组数据有一个正整数n(2<=n<=1000)。
输出
如果输入的素数可以和其他素数构成孪生素数,输出Yes,否则输出No。
样例输入
3
2
样例输出
Yes
No
提示
3和5可以构成孪生素数,所以输出Yes,但是2无法和4或者0构成孪生素数,所以输出No。
源代码:
#include<stdio.h>
#include<math.h>
int prime(int m);
int main()
{
int i,n,flag;
while(scanf("%d",&n) != EOF)
{
flag = 0;
if(prime(n) == 1)
{
if(prime(n-2) == 1)
flag += 1;
else if(prime(n+2) == 1)
flag += 1;
}
if(n == 2)
flag = 0;
if(flag >= 1)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
int prime(int m)
{
int i,k;
k = (int)sqrt(m);
for(i = 2; i <= k; i++)
if(m % i == 0)
{
return 0;
break;
}
return 1;
}