这道题就是一道打印素数表的题目,本人使用的是筛选法,用bool数组记录是否为素数,每一次筛掉本轮数字的倍数,如果当前数字bool数组对应位置为false,则为素数。
这道题的坑是:你不知道最大第10000个素数是多大,所以数组尽量往大里开吧,其次就是格式的问题,自己调一调可就可以了
#include<iostream> #include<stdio.h> using namespace std; const int MAX=1000000; bool p[MAX]={0}; //全部列表初始化的话只能初始化为0 int main(){ freopen("in.txt","r",stdin); int start,end; int count=0; scanf("%d %d",&start,&end); for(int i=2;;++i){ if(p[i]==false){ count++; if(count>=start){ printf("%d",i); if(count==end) break; if((count-start+1)%10==0) printf("\n"); else printf(" "); } } for(int j=i+i;j<=MAX;j+=i) p[j]=true; } return 0; }
原文:https://www.cnblogs.com/chuan-chuan/p/11443504.html