素数定义范围是:非0的自然数
所以负数和0不是素数,此外1既不是合数也不是素数
为啥i<=sqrt(n)就行?
因为如果一个数不是质数,则它可以表示成除了1和它本身之外的两数相乘,这两个数中总会有一个小于等于它的算术平方根
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
bool jud = false;//jud是帮助最后判断是不是素数
int n;
cin >> n;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
jud = true;
}
}
if (jud||n==1) cout << n<<"不是素数";//不要忘记把1不是素数的情况加进来
else cout << n<<"是素数";
return 0;
}
提示:此外2以上的偶数一定不是素数,所以可改进为从3开始循环,增量为2,请屏幕前的你尽情施展才华。