枚举算法

找出从1到n之间的所有的素数:

include

include

using namespace std;

bool isPrime(int num) {
if (num <= 1) return false; // 0和1不是素数
if (num == 2) return true; // 2是素数
if (num % 2 == 0) return false; // 偶数不是素数(除了2)

// 枚举所有可能的因子,范围从3到sqrt(num),步长为2(只检查奇数)
for (int i = 3; i * i <= num; i += 2) {
    if (num % i == 0) {
        return false;  // 找到因子,不是素数
    }
}
return true;  // 没有找到因子,是素数

}

int main() {
int n;
cout << "请输入一个正整数 n: ";
cin >> n;

vector<int> primes;  // 存储所有素数的向量

// 枚举算法:遍历1到n之间的所有数
for (int i = 1; i <= n; i++) {
    if (isPrime(i)) {
        primes.push_back(i);  // 将素数添加到结果向量中
    }
}

// 输出结果
cout << "1 到 " << n << " 之间的素数有: ";
for (int prime : primes) {
    cout << prime << " ";
}
cout << endl;

return 0;

}
这个就是枚举算法的一道基础题,这个示例展示了枚举算法的基本框架:遍历所有可能性,逐一验证条件。在实际应用中,枚举算法的效率可能需要通过缩小查找的范围,因为枚举是暴力地把所有情况一一列举出来,而往往会有很多种情况,所以说,枚举的应用范围不算太广,不过算是最好理解的一种算法。

posted @ 2025-07-28 21:33  暗神酱  阅读(9)  评论(0)    收藏  举报