注意一下这行代码
for (int i = 2; i <= x / i; i ++)
这里容易证明 i <= x / i
一定是正确的,不用 i * i <= x
是因为可能会爆int,不用sqrt是因为开平方很慢
#include <iostream>
using namespace std;
bool is_prime(int x){
if (x < 2) return false;
for (int i = 2; i <= x / i; i ++){
if (x % i == 0) return false;
}return true;
}
int main(){
int n, m;
cin >> n;
while (n --){
cin >> m;
if (is_prime(m)) puts("Yes");
else puts("No");
}
return 0;
}