C 筛选法找素数

#include <stdio.h>
#include <stdlib.h>

void waqu(int num[], int wa);
int main() {
    int num[100];
    int i = 0;
    for (i = 0; i < 100; i++) {
        num[i] = i + 1;
    } //初始化

    //挖掉1
    num[0] = 0;
    int wa = 2;

    for (wa = 2; wa <= 10; wa++) {
        int j = 2;
        int isWa = 1; //挖去因子

        //来确定这个数字是不是挖去因子
        for (j = 2; j <= wa; j++) {
            //这里是在确定因子  比如4的倍数是不用考虑在挖去的
            //因为4是2的倍数  在挖2的倍数的时候 其实已经把4的倍数挖走了
            //为什么要加上 wa!=j 呢?
            //wa=2时 wa%j==0 但是2的倍数还没开始挖呢!
            if (wa % j == 0 && wa != j) {
                isWa = 0;
            }
        }
        if (isWa) {
            //执行挖去操作
            printf("%d,", wa);
            waqu(num, wa);
        }
    }

    for (i = 0; i < 100; i++) {
        if (num[i] == 0) {

        } else {
            printf("%3d,", num[i]);

        }
    }

    return 1;
}

void waqu(int num[], int wa) {
    int i = wa;
    for (i = 0; i < 100; i++) {
        if (num[i] == 0) {

        } else if (num[i] % wa == 0 && num[i] != wa) {        //如果是2的倍数//不包括2本身
            num[i] = 0;
        }
    }
}
原文地址:https://www.cnblogs.com/cart55free99/p/2973815.html