素数三元组
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
相邻三个奇数都是素数是一种非常少见的情形,也就是三个奇数p-2, p, p+2都是素数,这样就形成了一个素数三元组。请找出三个数都不超过n的所有这样的素数三元组。
-
输入
- 输入多组数据,每组测试数据为一个正整数n,n <= 5000000。 输出
- 输出大小不超过n的所有的素数三元组,每行按照从小到大的顺序输出一个三元组中的三个数,两个数之间用空格间隔。如果不存在这样的素数三元组,请输出“No triple”。 样例输入
-
1
样例输出
-
No triple
-
-
找规律代码:
-
-
#include<iostream> #include<cstring> #include<cstdio> using namespace std; #define T 5000010 int bo[T]; void Isprime() { memset(bo,0,sizeof(bo)); for(int i=2;i<10000;++i) { if(!bo[i]) { for(int j=i*i;j<T;j+=i) { bo[j]=1; } } } } int main() { int n,i,k; Isprime(); while (~scanf("%d",&n)) { for(i=7,k=0;i<=n;i+=2) { if((!bo[i-4])&&(!bo[i-2])&&(!bo[i])) { k=1; printf("%d %d %d\n",i-4,i-2,i); } } if(!k) printf("No triple\n"); } return 0; }
-
AC代码:
-
-
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int main() { int n,i; while (~scanf("%d",&n)) { if(n>=7) printf("3 5 7\n"); else printf("No triple\n"); } return 0; }