感觉其实可以不水的。
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 }