|
发表于 2023-10-28 11:32:49
|
显示全部楼层
本楼为最佳答案
你可以使用筛选法来求解2到1000之间的素数。筛选法是一种常见的算法,它通过不断筛选掉非素数来找出素数。
首先,你需要创建一个长度为1001的布尔数组,用来标记每个数字是否为素数。将数组中的所有元素初始化为true,表示所有数字都是素数。
然后,从2开始,遍历数组中的每个数字。如果当前数字为素数(即数组中对应位置的值为true),则将该数字的所有倍数标记为非素数(即将数组中对应位置的值设为false)。
最后,遍历数组中的数字,将值为true的数字输出即可,它们就是2到1000之间的素数。
下面是用C++实现的代码示例:
- #include <iostream>
- #include <vector>
- using namespace std;
- vector<int> findPrimes(int n) {
- vector<bool> isPrime(n+1, true);
- vector<int> primes;
- for (int i = 2; i <= n; i++) {
- if (isPrime[ i]) {
- primes.push_back(i);
- for (int j = i*2; j <= n; j += i) {
- isPrime[j] = false;
- }
- }
- }
- return primes;
- }
- int main() {
- vector<int> primes = findPrimes(1000);
- for (int prime : primes) {
- cout << prime << " ";
- }
- cout << endl;
- return 0;
- }
复制代码
这段代码会输出2到1000之间的所有素数。你可以根据需要修改代码中的参数来求解不同的范围内的素数。 |
|