c++如何筛选20以内质数
时间: 2024-10-22 14:20:35 浏览: 50
在C++中,我们可以使用循环和条件判断的方式来筛选出20以内的质数。质数是指大于1的自然数,除了1和它本身以外不再有其他因数。以下是一个简单的示例程序:
```cpp
#include <iostream>
using namespace std;
// 判断是否为质数的辅助函数
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; ++i) { // 只需检查到 sqrt(num),因为超过该值的因子必定有一个小于等于sqrt(num)
if (num % i == 0)
return false;
}
return true;
}
// 筛选出20以内的质数并打印
void printPrimesBelow Twenty() {
for (int i = 2; i < 20; ++i) {
if (isPrime(i))
cout << i << " ";
}
}
int main() {
printPrimesBelowTwenty();
return 0;
}
```
当你运行这个程序,它会输出20以内的所有质数,如2、3、5、7、11、13、17和19。
相关问题
c++筛选法求n以内素数
在 C++ 中,筛选法(Sieve of Eratosthenes)是一种常见的求解 n 以内素数的经典算法。这种算法基于筛除法的思想,主要用于寻找小于等于给定数值的所有质数。以下是基本的步骤:
1. 创建一个布尔数组,大小为 n+1,初始所有元素都标记为 true,表示它们都是潜在的质数。
2. 从 2 开始(最小的质数),遍历这个数组,将每个素数的倍数都标记为 false,因为它们不是质数。例如,2 的倍数就是 4, 6, 8, ... 等,3 的倍数是 6, 9, 12, ... 等。
3. 遍历结束后,数组中仍然为 true 的位置对应的数字就是素数。
下面是一个简单的 C++ 实现示例:
```cpp
#include <iostream>
#include <vector>
std::vector<int> sieveOfEratosthenes(int n) {
std::vector<bool> isPrime(n + 1, true); // 假设所有数都是质数
isPrime[0] = isPrime[1] = false; // 0 和 1 不是质数
for (int i = 2; i * i <= n; ++i) { // 只需检查到√n
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i)
isPrime[j] = false;
}
}
// 收集所有的质数
std::vector<int> primes;
for (int i = 2; i <= n; ++i)
if (isPrime[i])
primes.push_back(i);
return primes;
}
int main() {
int n;
std::cout << "Enter a number: ";
std::cin >> n;
std::vector<int> primeNumbers = sieveOfEratosthenes(n);
std::cout << "Primes less than or equal to " << n << ": ";
for (const auto& prime : primeNumbers)
std::cout << prime << " ";
std::cout << "\n";
return 0;
}
```
C++判断1000以内素数数量
以下是C++判断1000以内素数数量的代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
int judge(int a) {
int i;
if(a<=1) return -1;
for(i=2;i<=sqrt(float(a));i++) {
if(a%i==0) {
return -1;
}
}
return 1;
}
int main() {
int a, count=0;
cout<<"1000以内的素数为:"<<endl;
for(a=1;a<=1000;a++) {
if(judge(a)==1) {
cout<<a<<" ";
count++;
}
}
cout<<endl<<"1000以内素数的数量为:"<<count<<endl;
return 0;
}
```
阅读全文
相关推荐















