哈理工oj的2383 算法实力。我的代码为什么超时

算法实力

代码↓

#include
#include
#include
using namespace std;
const int maxn=1000000001 ;
int main()
{
#ifdef local
freopen("Text.txt","r",stdin);
#endif // local

int t,n;
scanf("%d",&t);
while(t--){
    scanf("%d",&n);
    int flag=0;
    for(int i=2;i<=sqrt(n);i++){
            for(int j=i*i;j<maxn;j=j*i){
                if(j==n){
                    flag=1;
                    break;
                }
            }
            if(flag==1)
                break;
    }

    if(flag==1)
        cout<<"yes"<<endl;
    else
        cout<<"no"<<endl;
}

return 0;

}

t没初始化。while的判断条件始终非0

不知道你的题目是什么
for(int j=i*i;j<maxn;j=j*i){
if(j==n){
flag=1;
break;
}
}
这段代码,因为j的值始终没有修改,所以一旦条件满足,将陷入死循环。