c++利用数组筛选1-100之间的素数
时间: 2023-03-31 20:04:05 浏览: 102
可以使用以下代码来筛选1-100之间的素数:
#include <stdio.h>
int main() {
int prime[100] = {}; // 初始化数组
int count = ; // 记录素数个数
for (int i = 2; i <= 100; i++) {
if (prime[i] == ) { // 如果当前数还没有被标记为非素数
printf("%d ", i); // 输出当前素数
count++; // 素数个数加1
for (int j = i * i; j <= 100; j += i) {
prime[j] = 1; // 标记当前数的倍数为非素数
}
}
}
printf("\n共有%d个素数\n", count); // 输出素数个数
return ;
}
相关问题
C++用筛选法求100以内的素数
以下是用C++语言实现筛选法求100以内的素数的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const int maxn = 100;
bool prime[maxn + 1];
memset(prime, true, sizeof(prime)); // 初始化全部为true
for (int p = 2; p <= maxn; p++)
{
if (prime[p])
{
cout << p << " "; // 输出当前素数
for (int i = p * p; i <= maxn; i += p)
{
prime[i] = false; // 将当前素数的倍数标记为非素数
}
}
}
return 0;
}
```
程序首先定义了一个`prime`数组,表示当前下标对应的数是否为素数。然后使用`memset`函数初始化所有元素为`true`。
接着使用双重循环,外层循环从2开始枚举每个数,内层循环从当前素数的平方开始,每次增加素数个数的步长,将当前素数的倍数标记为非素数。
最后输出所有素数即可。
C++使用筛选法求100以内的素数
筛选法,也称埃氏筛法,可以用来求解一定范围内的素数。以下是 C++ 实现代码:
```c++
#include <iostream>
using namespace std;
const int MAXN = 100;
int main() {
// 初始化数组,0 表示未访问过,1 表示不是素数,2 表示是素数
int vis[MAXN+1] = {0};
for (int i = 2; i <= MAXN; i++) {
if (!vis[i]) { // i 是素数
cout << i << " ";
for (int j = i * i; j <= MAXN; j += i) {
vis[j] = 1; // j 不是素数
}
}
}
return 0;
}
```
首先将数组初始化为 0,表示都未访问过。从 2 开始遍历到 100,如果当前数字 i 还没有被访问过,则将其输出,并将它的倍数(i * i,i * (i+1),i * (i+2),...)标记为不是素数。最后输出的就是 100 以内的所有素数。