当前位置:首页C语言 > 正文

C语言用筛选法求100以内素数

作者:野牛程序员:2023-07-04 18:19:27C语言阅读 2913

要使用筛选法(Sieve of Eratosthenes)求解100以内的素数,可以按照以下步骤进行:

  1. 创建一个长度为101的布尔数组isPrime,用来标记数字是否为素数。初始化时将所有元素都设置为true

  2. 将数组中索引为0和1的元素设置为false,因为它们不是素数。

  3. 从2开始,遍历数组中的每个数字,如果该数字为素数(即isPrime[i]true),则将其所有的倍数都标记为false,因为它们不是素数。

  4. 遍历完数组后,所有值为true的索引即为素数。可以将它们输出或保存在另一个数组中。

以下是使用C语言编写的示例代码实现:

#include <stdio.h>

#define SIZE 101

void sieveOfEratosthenes()
{
    // 创建布尔数组并初始化
    bool isPrime[SIZE];
    for (int i = 0; i < SIZE; i++) {
        isPrime[i] = true;
    }

    // 排除0和1
    isPrime[0] = false;
    isPrime[1] = false;

    // 筛选法求素数
    for (int i = 2; i * i < SIZE; i++) {
        if (isPrime[i]) {
            for (int j = i * i; j < SIZE; j += i) {
                isPrime[j] = false;
            }
        }
    }

    // 输出素数
    printf("Prime numbers up to 100:\\n");
    for (int i = 2; i < SIZE; i++) {
        if (isPrime[i]) {
            printf("%d ", i);
        }
    }
    printf("\\n");
}

int main()
{
    sieveOfEratosthenes();

    return 0;
}

运行该程序将输出100以内的素数。

输出结果:

Prime numbers up to 100:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

这些数字即为100以内的素数。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击