标题

***Prime Cuts

Prime Cuts的英文题目如下:
Prime Cuts的代码详解
这个题翻译过来意思是:输入一个N和一个C,最后输出一个数字序列。
这个数字序列要求是从1开始到N的的素数,然后数的个数也有要求,大致分两种情况,一种是从一到N的素数个数为奇数,另一种是个数为偶数。
若个数为奇数时,输出的素数个数为2c-个,这时要注意当2c-1大于这个范围内的素数个数时把素数全部输出即可,不然则要输出中间的素数,输出的个数为2c-1.
当个数为偶数时除了将素数个数改为2
C,其余的与奇数时相同。
这个题我是直接用的打表把素数表先打出来,然后再将其中的素数存入数组中,在进行的运算。#include<stdio.h> #include<math.h> int main() { int a[1001]= {0},b,c,d,i,j,s[1000]; for(i=2; i<=1000; i++) if(!a[i]) for(j=i+i; j<=1000; j+=i) a[j]=1; for(i=1,j=1; i<=1000; i++) if(!a[i]) { s[j]=i; j++; } while(EOF!=scanf("%d%d",&b,&c)) { i=0; for(d=1; d<=b; d++) if(!a[d]) i++; //printf("%d\n",i); if(i%2==0) { printf("%d %d:",b,c); if(c*2>=i) { // printf("333"); for(d=1; d<=i; d++) printf(" %d",s[d]); printf("\n"); } else { //printf("222"); c*=2; i-=c; i/=2; for(j=i+1; j<=i+c; ) { printf(" %d",s[j]); j++; } printf("\n"); } printf("\n"); } else { printf("%d %d:",b,c); if(c*2-1>=i) { for(d=1; d<=i; d++) printf(" %d",s[d]); printf("\n"); } else { //printf("444"); c*=2; c--; //printf("%d\n%d\n",i,c); i-=c; i/=2; for(j=i+1; j<=i+c; ) { printf(" %d",s[j]); j++; } printf("\n"); } printf("\n"); } } /*for(d=1; d<=21; d++) if(!a[d]) printf("%d ",d);*/ return 0; }
最后向各位老铁提个建议一定要会调试,不然连那出错都找不出。
第一次写博客,谢谢铁子们的支持,我再接再励尽量多出一些作品,供大家参考学习。

相关文章: