c 指定范围的质数

 

#include <stdio.h>
#include <string.h>

int n = 1000000;
int mark[1000001];

int main() {
    int N,M,j;//N和M为指定输出的质数范围
    int c;
    memset(mark, 0, sizeof(mark));//对数组进行清零的函数
    mark[0] = 1;
    mark[1] = 1;

    scanf("%d %d",&N,&M);

    for (c = 2; c * c <= N; c++) {//循环标记
        if(mark[c] != 1){
            for(j=2; j <= n/c; j++){//用倍乘的方式进行标记
                mark[ c * j ] = 1;
            }
        }

    }
    for(c = M; c<=N; c++){//将未标记的数输出,即输出质数
        if(mark[c] != 1){
            printf("%d
",c);
        }
    }
 
 

    return 0;
}
原文地址:https://www.cnblogs.com/qingjiawen/p/15073451.html