代码↓
#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的值始终没有修改,所以一旦条件满足,将陷入死循环。