哪位大佬看一下,一直是浮点错误
#include <bits/stdc++.h>
using namespace std;
int prime(int n){
if(n<=1)
return 0;
for(int i=2;i*i<=n;i++){
if(n%i==0) return 0;
}
return 1;
}
int main(){
int n,flag;
while(scanf("%d",&n)){
flag=0;
if(n==0)
break;
else{
if(!prime(n)){
for(int i=2;i*i<=n;i++){
if(n%(i*i)==0)
flag=1;
}
}
if(flag)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}
using namespace std;
int prime(int n){
if(n<=1)
return 0;
for(int i=2;i*i<=n;i++){
if(n%i==0) return 0;
}
return 1;
}
int main(){
int n,flag;
while(scanf("%d",&n)){
flag=0;
if(n==0)
break;
else{
if(!prime(n)){
for(int i=2;i*i<=n;i++){
if(n%(i*i)==0)
flag=1;
}
}
if(flag)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}