传送门:【SGU】113. Nearly prime numbers
题目分析:O(sqrt(N))。。
代码如下:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std ;
#define rep( i , a , b ) for ( int i = ( a ) ; i < ( b ) ; ++ i )
#define For( i , a , b ) for ( int i = ( a ) ; i <= ( b ) ; ++ i )
#define rev( i , a , b ) for ( int i = ( a ) ; i >= ( b ) ; -- i )
#define clr( a , x ) memset ( a , x , sizeof a )
const int MAXN = 5 ;
int n ;
bool check ( int x ) {
int top = 0 ;
for ( int i = 2 ; i * i <= x ; ++ i ) {
if ( x % i == 0 ) {
while ( x % i == 0 ) {
x /= i ;
top ++ ;
if ( top > 2 ) return 0 ;
}
}
}
if ( x > 1 ) ++ top ;
return top == 2 ;
}
void solve () {
int x ;
For ( i , 1 , n ) {
scanf ( "%d" , &x ) ;
printf ( check ( x ) ? "Yes\n" : "No\n" ) ;
}
}
int main () {
while ( ~scanf ( "%d" , &n ) ) solve () ;
return 0 ;
}