孪生素数
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 37 Accepted Submission(s) : 6
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
相差为2的素数称为孪生素数,求出指定区间上所有的孪生素数
Input
输入以EOF作为结束标志,输入a,b(0<a,b<10000)代表区间的两个端点,区间是闭区间
Output
输出这个区间内所有孪生素数对,如果该区间内没有孪生素数对就输出-1.样例之间和最后输出一个空行
Sample Input
3 7
10 11
Sample Output
(3,5)
(5,7)
-1
Author
kuaichenyang
解题思路:对质数的考察
code(c)
#include<stdio.h>
#include<math.h>
int isPrime(int num){
int m;
if(num==1) return 0;
if(num==2) return 1;
for(m=2;m<(int)sqrt((double)num);m++){
if(num%m==0)
break;
}
if(num%m==0)
return 0;
else
return 1;
}
int main()
{
int a,b;
int i,flag=0;
while(scanf("%d%d",&a,&b) != EOF)
{
flag=1;
for(i=a;i<=b;i++)
{
if(isPrime(i)&&isPrime(i+2))
{
flag=0;
printf("(%d,%d)\n",i,i+2);
}
}
if(flag)
printf("-1");
}
return 0;
}