数值一大就容易错
#include <cstdio>
#include <cmath>
using namespace std;
long long n,tmp;
int q(long long t){
if(t==1) return 0;
for(long long i=2;i<=sqrt(t);i++){
if(t%i==0) return 0;
}
return 1;
}
int main(){
scanf("%ld",&n);
for(int i=0;i<n;i++){
scanf("%ld",&tmp);
if(q(tmp)) puts("Yes");
else puts("No");
}
return 0;
//1<=n<=100
//1<=t<=10^18
}
10000000000000005 这个例子就过不了,但是拿出来判断一下就又可以,同为10000000000000005 但答案却不一样???
#include <cstdio>
#include <cmath>
using namespace std;
long long n,tmp;
int q(long long t){
if(t==1) return 0;
for(long long i=2;i<=sqrt(t);i++){
if(t%i==0) return 0;
}
return 1;
}
int main(){
scanf("%ld",&n);
for(int i=0;i<n;i++){
scanf("%ld",&tmp);
if(q(tmp)) puts("Yes");
else puts("No");
}
if(q(10000000000000005)){
puts("Yes");
}
else{
puts("No");
}
return 0;
}
有dalao知道原因吗?