首页 > 编程笔记 > C语言笔记

C语言列出100~200所有素数(有源码有解析)

在介绍如何使用C语言列出 100 到 200 之间的所有素数之前,我们需要先理解什么是素数。素数,也称为质数,是一个大于 1 的自然数,除了 1 和它本身外,不能被其他自然数整除。换句话说,素数只有两个因数:1 和它本身。例如,2、3、5、7、11 都是素数,而 4、6、8、9、10 不是素数。
 

判断一个数是否为素数的原理相对简单。对于一个给定的数 n,我们只需要检查从 2 到 √n 的所有整数是否能整除 n。如果在这个范围内没有数能整除 n,那么 n 就是一个素数。
 

我们之所以只需要检查到 √n,是因为如果 n 不是素数,它必然可以分解为两个因数 a 和 b,其中至少有一个小于或等于 √n。


现在,让我们来看看如何使用C语言编写一个程序来列出 100 到 200 之间的所有素数。我们将使用一个函数来判断一个数是否为素数,然后在主函数中遍历 100 到 200 之间的所有数,并打印出其中的素数。

#include <stdio.h>
#include <stdbool.h>
#include <math.h>

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

int main() {
    printf("100 到 200 之间的素数:\n");
    for (int i = 100; i <= 200; i++) {
        if (isPrime(i)) {
            printf("%d ", i);
        }
    }
    printf("\n");
    return 0;
}

这段代码首先定义了一个 isPrime 函数,用于判断一个数是否为素数。在主函数中,我们遍历 100 到 200 之间的所有数,对每个数调用 isPrime 函数,如果返回 true,就将这个数打印出来。
 

让我们来详细解释一下 isPrime 函数的工作原理:


在主函数中,我们使用一个 for 循环遍历 100 到 200 之间的所有数。对于每个数,我们调用 isPrime 函数。如果函数返回 true,我们就打印这个数。


运行这段代码,我们会得到如下输出:

100 到 200 之间的素数:
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199

这个程序虽然能够正确地列出素数,但在处理大范围的数时可能会比较慢。对于更大范围的素数查找,我们可能需要考虑使用更高效的算法,比如埃拉托斯特尼筛法(Sieve of Eratosthenes)。不过,对于 100 到 200 这个范围来说,这个简单的方法已经足够高效了。
 

通过这个例子,我们不仅学会了如何判断和列出素数,还练习了函数的定义和使用、循环结构、条件判断等C语言的基本概念。这种结合数学概念和编程技巧的练习,对于提升编程能力和逻辑思维都有很大帮助。

相关文章