#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\n",c); } } return 0; }