判断一个输是不是质数,比较简单的方法有两种。
第一种:
质数的定义是:除了1和它本身,不能被其他任何数整除,然后最小的质数是2。
代码如下:
bool isPrime(int num) {
if (num <= 3) {
return num > 1;
}
for (int i = 2; i < num; i++) {
if (num % i == 0)
return false;
}
return true;
}
这里多处理了一下3,能提高整个程序的性能
第二种:
质数的对立面是合数,任何一个合数,除了能被1和它本身整除之外,还能被其他整数整除,比如 1 < a < n, 如果 a 能整除 n, 那么必有另一个数 b = n/a 也能整除 n,其中 a 必然小于等于 n 的平方,b必然大于等于 n 的平方,所以其实我们判断这个数的平方以下的数字能不能整除这个数就可以了。
#include <math.h>
bool isPrime(int num) {
if (num <= 3) {
return num > 1;
}
int sqrt = sqrt(num);
for (int i = 2; i <= sqrt ; i++) {
if (num % i == 0)
return false;
}
return true;
}