从键盘输入一个数n,输出小于或等于n的所有素数的个数
时间: 2023-05-21 08:04:41 浏览: 100
键盘敲入一个数并输出1~这个数的所有素数
您好,以下是回答:
您可以使用Eratosthenes筛选法来解决此问题。首先,您需要定义一个布尔类型的数组,例如bool isPrime[n],然后将所有元素初始化为true。
接下来,您需要在数组中标记所有非素数。方法是从2开始,遍历数组,将所有倍数为2的元素标记为false,然后从3开始,遍历数组,将所有倍数为3的元素标记为false,直到sqrt(n)。
最后,遍历数组并统计被标记为true的元素数量,即小于或等于n的所有素数的个数。
下面是C++代码示例:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
bool isPrime[n+1];
memset(isPrime, true, sizeof(isPrime)); // initialize all elements as true
for(int p=2; p*p<=n; p++) { // traverse from 2 to sqrt(n)
if(isPrime[p] == true) { // if element is prime
for(int i=p*p; i<=n; i+=p) { // mark all multiples of p as false
isPrime[i] = false;
}
}
}
int count = 0;
for(int i=2; i<=n; i++) {
if(isPrime[i] == true) { // count all elements that are still true
count++;
}
}
cout << count << endl;
return 0;
}
阅读全文