普通版:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a=0;
long long n;
long long i=2;
scanf("%d",&n);
while (i<n) {
if(n%i==0){
a++;
}
i++;
}
if(a==0){
printf("Yes\n", n);
}
else if(a==0||a==1){
printf("No\n",n);
}
else{
printf("No\n", n);
}
return 0;
}
不过,上面的代码执行时间太长,比如【 2147483647】这个数就要运行7秒多,所以,用优化版就可以节省时间:
#include <iostream>
#include <cmath>
using namespace std;
int n;
int main(){
cin >>n;
int i =2;
while(i<=sqrt(n)){
if(n%i==0){
cout <<"NO"<<endl;
return 0;
}
i++;
}
cout <<"YES"<<endl;
return 0;
}
导入 <cmath>使用sqrt(n)求平方根。