一个数的因数都是成对出现的:例如12的因数有3和4,2和6
所以我们可以只枚举较小的那一个,即根下n,假设较小的为d,较大的为n/d;
#include<bits/stdc++.h>
using namespace std;
bool is_prime(int n){
if(n<2) return false;
for(int i=2;i<=n/i;i++){
if(n%i==0) return false;
}
return true;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
int a;
cin>>a;
if(is_prime(a)) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
哥们为什么不能直接用n % i != 0就知到他不是质数了呀,为什么就是要先看他是不是约数呢
按你这个逻辑,12%4==0,那么12是约数;and 12%5 != 0 ,那么12是质数???
(质数的定义:在大于1的自然数中,除了1和它本身以外不再有其他因数)
已经明白了谢谢
### 注意:sqrt(n)运行速度较慢不推荐;ii<=n不推荐 因为如果long long int ->n而i只是int 有可能ii溢出为负数 所以可以(LL)I*i
感谢告知。
能告诉我你的字体为什么跟我们的不一样嘛
markdown语法
为什么我在bool里把if(n<2)改成if(n<=2)就是错的呢,它明明都是false啊,这是什么情况啊
2是质数
哦噢,我人傻了哈哈