没啥好说的,求质数的话,有几种方法,一种是筛。另外一种是质数判定。筛的话,就是用一个bool数组,每次把倍数设置上,大概这样:
for (i = 2; i <= n; ++i) {
if (!mark[i]) { //是质数
for (j = i * i; j <= n; j += i) {
mark[j] = true; //合数
}
如果质数判定的话,暴力的方法可以判定,这题范围那么小,就暴力吧。当然也可以把sqrt(n)的质数表打出来,试图分解质因数。暴力的判定方法,大概这样:
bool isPrime(int n) {
int i;
for (i = 2; i * i <= n; ++i) {
if (n % i == 0) { //合数
return false;
}
}
return true;
}