C 练习实例36 - 求100之内的素数

C 语言经典100例 C 语言经典100例

题目:求100之内的素数。

程序分析:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。

程序源代码:

实例 1

// Created by www.runoob.com on 15/11/9. // Copyright © 2015年 菜鸟教程. All rights reserved. // #include <stdio.h> #include <math.h> int main() { int n = 0; for (int i = 2; i <= 100; i++) { int is_prime = 1; // 假设i是素数 int k = (int)sqrt(i); for (int j = 2; j <= k; j++) { if (i % j == 0) { is_prime = 0; // 如果i能被j整除,则i不是素数 break; } } if (is_prime) { printf("%d ", i); n++; if (n % 5 == 0) { printf("\n"); } } } return 0; }

实例 2

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

int main() {
    bool is_prime[101];  // 创建一个布尔数组,初始化为true
    for (int i = 2; i <= 100; i++) {
        is_prime[i] = true;
    }

    for (int i = 2; i * i <= 100; i++) {
        if (is_prime[i]) {
            for (int j = i * i; j <= 100; j += i) {
                is_prime[j] = false;
            }
        }
    }

    int n = 0;
    for (int i = 2; i <= 100; i++) {
        if (is_prime[i]) {
            printf("%d ", i);
            n++;
            if (n % 5 == 0) {
                printf("\n");
            }
        }
    }
    return 0;
}

以上实例输出结果为:

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 

C 语言经典100例 C 语言经典100例