用c++判断素数问题 判断一个大于 2 的正整数 n 是否为素数,请用至少两种方法实现 点击复制后,将打开C知道体验页 "
时间: 2024-05-05 19:21:54 浏览: 109
以下是两种判断素数的方法,均使用 C++ 实现:
方法一:暴力枚举法
```
#include <iostream>
using namespace std;
bool is_prime(int n) {
if (n <= 1) return false; // 1 不是素数
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int n;
cout << "请输入一个大于2的正整数:";
cin >> n;
if (is_prime(n)) {
cout << n << "是素数" << endl;
} else {
cout << n << "不是素数" << endl;
}
return 0;
}
```
方法二:埃氏筛法
```
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1000000;
bool is_prime[MAXN + 1]; // 标记数组,is_prime[i] 表示 i 是否为素数
void sieve(int n) {
memset(is_prime, true, sizeof(is_prime)); // 初始化为 true,表示所有数都是素数
is_prime[0] = is_prime[1] = false; // 0 和 1 不是素数
for (int i = 2; i <= n; i++) {
if (is_prime[i]) { // 如果 i 是素数,就把 i 的倍数标记为合数
for (int j = i * 2; j <= n; j += i) {
is_prime[j] = false;
}
}
}
}
int main() {
int n;
cout << "请输入一个大于2的正整数:";
cin >> n;
sieve(n);
if (is_prime[n]) {
cout << n << "是素数" << endl;
} else {
cout << n << "不是素数" << endl;
}
return 0;
}
```
阅读全文