九度OJ1163 素数
操作方法
- 01
- 02
思路 首先找出1到1000范围内的所有素数。 然后从1开始按10递增枚举 代码 #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define MAX 10010 bool prime[MAX]; int st[MAX]; void make_prime() { prime[1]=false; int i,j; for(i=4;i<=10000;i+=2) prime[i]=false; for(i=3;i<=10000;i+=2) { //if(prime[i]) { for(j=2;i*j<=10000;j++) { prime[i*j]=false; } } } } int main() { memset(prime,true,sizeof(prime)); int n; make_prime(); while(scanf("%d",&n)!=EOF) { int ct=0; int i; for(i=1;i<n;i+=10) { if(prime[i]) //printf("%d\n",i); st[ct++]=i; } if(ct==0) { printf("-1\n"); continue; } for(i=0;i<ct;i++) { printf("%d",st[i]); if(i!=ct-1) printf(" "); } printf("\n"); } } 运行结果
赞 (0)