感觉其实可以不水的。

 1 //好像是一道特别水的小学数学题。但是我确实看了很久有试了几个样例才懂得。T_T
 2 // 先判断是不是素数。如果是素数的话。An-1一定不等于An。否则的话。
 3 // 继续找如果有一对因子是互素的 就说明是相等的。否则不是、 1和n这一对不算。
 4 
 5 #include <stdio.h>
 6 #include <string.h>
 7 #include <iostream>
 8 using namespace std;
 9 
10 int prime(int n) {
11     for (int i=2; i<n; ++i) {
12         if (n % i == 0) {
13             return 0;
14         }
15     }
16     return 1;
17 }
18 
19 int gcd(int a, int b){
20     if (a < b) {
21         int t = a;
22         a = b;
23         b = t;
24     }
25     if (b == 0) return a;
26     return gcd(b, a%b);
27 }
28 
29 int main() {
30     int t;
31     scanf("%d", &t);
32     while(t--) {
33         int n;
34         scanf("%d", &n);
35         if (prime(n)) {
36             printf("NO\n");
37             continue;
38         }
39         bool flag = true;
40         for (int i=2; i<n; ++i) {
41             if (n % i == 0) {
42                 int temp = n / i;
43                 if (gcd(temp, i) == 1) {
44                     flag = false;
45                     break;
46                 }
47             }
48         }
49         if (!flag) {
50             printf("YES\n");
51         }
52         else printf("NO\n");
53     }
54     return 0;
55 }
View Code

 

posted on 2015-10-10 11:02  小小八  阅读(200)  评论(0编辑  收藏  举报