本文出自:
题意:
求解An 与 An-1是否相等。
n分为两个情况——
1.n为素数,
2.n为合数。
= =好像说了个废话。。素数的时候,能够直接输出no,由于素数不可能和An-1相等。合数的时候,假设n是a^b次方,那么也是NO。原因非常easy,之前数字的最小公倍数的n的因子次方数,不能超过n的次方数。
//============================================================================// Name : 数论问题.cpp// Author :// Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include#include #include using namespace std;#define lln long long int#define MAXN 1000001bool vis[MAXN];int prime[100000];int p;void Prime(){ //0为不是合数,1为是合数 memset(vis, 1, sizeof(vis)); p = 0; int i, j; for(i = 2; i < MAXN; i++) { if(vis[i]) { prime[p++] = i; for(j = 2 * i; j < MAXN; j += i) vis[j] = 0; } else continue; }}void ace(){ //init Prime(); //work point int t, i; //num int a; int num; cin >> t; while(t--){ scanf("%d", &a); if(a == 2) { printf("NO\n"); continue; } if(vis[a]) printf("NO\n"); else { num = 0; for(i = 0 ; i <= p; i++) { if(a % prime[i] == 0) { num++; while(a % prime[i] == 0) a /= prime[i]; } if(a == 1) break; } if(num >= 2) printf("YES\n"); else printf("NO\n"); } }}int main() { ace(); return 0;}