描述小明刚刚学习了素数的概念 如果一个大于 1 的正整数 除了 1 和它自身外 不能被其他正整数整除 则这个正整数是素数。现在 小明想找到两个正整数 A 和 B 之间包括 A 和 B 有多少个素数用c++做输入描述输入 2 行 第一行包含正整数 A 第二行包含正整数 B 。约定 2≤A≤B≤ 1000输出描述输出一行 包含一个整数 C 表示找到 C 个素数。提示样例:输入210输出4输入9810
解法一:暴力法
#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;
}
``
原文地址: https://www.cveoy.top/t/topic/iIiv 著作权归作者所有。请勿转载和采集!