c++中建立一个类num,求指定数据范围内的所有素数
时间: 2023-10-07 11:03:59 浏览: 50
好的,我可以帮你解答这个问题。
以下是一个基于类的 C++ 实现,可以用于查找指定范围内的所有素数:
```c++
#include <iostream>
#include <vector>
using namespace std;
class num {
private:
int n;
vector<bool> is_prime;
public:
num(int limit) {
n = limit;
is_prime.resize(n + 1, true);
is_prime[0] = is_prime[1] = false;
for (int i = 2; i * i <= n; i++) {
if (is_prime[i]) {
for (int j = i * i; j <= n; j += i) {
is_prime[j] = false;
}
}
}
}
bool isPrime(int x) {
return is_prime[x];
}
};
int main() {
int limit = 100; // 指定数据范围
num n(limit);
for (int i = 1; i <= limit; i++) {
if (n.isPrime(i)) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
```
在上面的实现中,我们首先定义了一个名为 `num` 的类,并在构造函数中使用 Sieve of Eratosthenes 算法来预处理指定范围内的素数。然后,我们可以通过 `isPrime()` 方法来查询指定数字是否为素数。
在 `main()` 函数中,我们实例化了 `num` 类,并使用 `isPrime()` 方法来打印指定范围内的所有素数。