您的位置:首页 > 其它

哈理工OJ 1328

2015-10-10 11:02 190 查看
感觉其实可以不水的。

//好像是一道特别水的小学数学题。但是我确实看了很久有试了几个样例才懂得。T_T
// 先判断是不是素数。如果是素数的话。An-1一定不等于An。否则的话。
// 继续找如果有一对因子是互素的 就说明是相等的。否则不是、 1和n这一对不算。

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;

int prime(int n) {
for (int i=2; i<n; ++i) {
if (n % i == 0) {
return 0;
}
}
return 1;
}

int gcd(int a, int b){
if (a < b) {
int t = a;
a = b;
b = t;
}
if (b == 0) return a;
return gcd(b, a%b);
}

int main() {
int t;
scanf("%d", &t);
while(t--) {
int n;
scanf("%d", &n);
if (prime(n)) {
printf("NO\n");
continue;
}
bool flag = true;
for (int i=2; i<n; ++i) {
if (n % i == 0) {
int temp = n / i;
if (gcd(temp, i) == 1) {
flag = false;
break;
}
}
}
if (!flag) {
printf("YES\n");
}
else printf("NO\n");
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: