解法一:暴力法

#include <iostream>
using namespace std;

bool isPrime(int num) {
    if (num < 2) {
        return false;
    }
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

int countPrimes(int A, int B) {
    int count = 0;
    for (int i = A; i <= B; i++) {
        if (isPrime(i)) {
            count++;
        }
    }
    return count;
}

int main() {
    int A, B;
    cin >> A >> B;
    cout << countPrimes(A, B) << endl;
    return 0;
}

解法二:埃拉托斯特尼筛法

#include <iostream>
#include <vector>
using namespace std;

int countPrimes(int A, int B) {
    vector<bool> isPrime(B + 1, true);
    for (int i = 2; i * i <= B; i++) {
        if (isPrime[i]) {
            for (int j = i * i; j <= B; j += i) {
                isPrime[j] = false;
            }
        }
    }
    int count = 0;
    for (int i = A; i <= B; i++) {
        if (isPrime[i]) {
            count++;
        }
    }
    return count;
}

int main() {
    int A, B;
    cin >> A >> B;
    cout << countPrimes(A, B) << endl;
    return 0;
}
``
描述小明刚刚学习了素数的概念 如果一个大于 1 的正整数 除了 1 和它自身外 不能被其他正整数整除 则这个正整数是素数。现在 小明想找到两个正整数 A 和 B 之间包括 A 和 B 有多少个素数用c++做输入描述输入 2 行 第一行包含正整数 A 第二行包含正整数 B 。约定 2≤A≤B≤ 1000输出描述输出一行 包含一个整数 C 表示找到 C 个素数。提示样例:输入210输出4输入9810

原文地址: https://www.cveoy.top/t/topic/iIiv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录