1 #include<iostream>
2 #include<time.h>
3 #include<math.h>
4 #include<assert.h> //使用 assert.h 中的 assert 宏来限制非法函数的调用;
5 using namespace std;
6
7 // 判断是否为素数
8 int is_prime(int x) //尽量把谓词(用来判断某事物是否具有某特性的函数) 命名成 is_XXX 的形式,返回int型的值,非0表示真,0表示假;
9 {
10 assert(x>=0); //当 x>=0 不成立时,程序将异常终止,并给出提示信息;
11 if(x==1) return 0;
12 int m = floor(sqrt(x)+0.5); //四舍五入避免浮点误差 ,求sqrt(x)的原因是:如果一个数在 0~sqrt(x) 不能被整除,那么它在 0~x 也一定不能被整除;
13 for(int i=2;i<=m;i++)
14 {
15 if(x%i==0) //如果x有其他因子,可断定x不是素数;
16 return 0;
17 }
18 return 1;
19 }
20
21 int main()
22 {
23 clock_t start,end; //计时定义
24 int i,m;
25 cin>>m;
26 start = clock();
27 for(i=m-2;i>=3;i--)
28 {
29 if(is_prime(i) && is_prime(i+2))
30 {
31 cout<<i<<' '<<i+2<<endl;
32 break;
33 }
34 }
35 end = clock();
36 cout<<"time used = "<<(double)(end-start)/CLOCKS_PER_SEC<<endl;
37 return 0;
38
39 }