质数(素数):是指大于1且只能被1和它本身整除的正整数,2是最小素数,素数有无穷个
那么我们一般情况下字母判断一个数是不是质数呢?
首先我们可以根据他的性质来进行判断:
if(n<2) return false;
for(int i=2;i<n;i++){
if(n%i==0) return false;
}
return true;
那么是不是有更简单的思路呢?
我们仔细思考下,如果一个数不是质数,那他必然有一个小于等于他的平方根的因数,和一个大于等于他的平方根的因数,因此我们判断一个数是不是质数,只需要我们判断2~sqrt(n)之间是否有数能被n整除就可以了,节约了一点资源(虽然不算多ahhh)
只需要把for语句改成
for(int i=2;i*i<=n;i++)
那么其他的优化思路是不是还有呢?
比如大于2 的偶数肯定不是质数等性质,诸如此类,就需要你在写题的过程中自己根据题意做出优化的选择了。
接下来我们放几道练习题吧