10:素数对
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。 - 输入
- 一个正整数n。1 <= n <= 10000。
- 输出
- 所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。
- 样例输入
-
100
- 样例输出
-
3 5 5 7 11 13 17 19 29 31 41 43 59 61 71 73
1 #include<cstdio> 2 #include<cmath> 3 using namespace std; 4 void su(int); 5 int main() 6 { 7 int n; 8 scanf("%d",&n); 9 su(n); 10 return 0; 11 } 12 void su(int n) 13 { 14 bool l=0,s=0,k=0,x1=0,x2=0,p,h1=0,h2=0; 15 int x,y; 16 for(int i=2;i<=n;i++) 17 { 18 k=0,s=0; 19 if(i==2) 20 { 21 x==i; 22 s=1; 23 x1=1; 24 continue; 25 } 26 for(int j=2;j<=sqrt(i);j++) 27 { 28 if(i%j==0) 29 { 30 k=1; 31 break; 32 } 33 } 34 if(k==0&&x1==0) 35 { 36 x=i;x1=1;s=0; 37 } 38 else 39 if(k==0&&x2==0) 40 { 41 y=i;x2=1;s=1; 42 } 43 else 44 if(k==0&&x1==1&&x2==1) 45 { 46 p=x; 47 x=y; 48 y=i; 49 s=1; 50 } 51 if(x1==1&&x2==1&&y-x==2&&s==1) 52 { 53 printf("%d %d\n",x,y);l=1; 54 } 55 } 56 if(l==0) 57 printf("empty"); 58 }
时间: 2024-10-13 03:04:45