最小连续n个合数。试求出最小的连续n个合数(其中n是键盘输入的任意正整数)。
思路:
判断素数合数,同时计数,然后数量满足n个的合数,得到其区间,输出。
流程图:
代码:
#include<time.h>#include<stdio.h>#include<math.h>int main() {double op,ed;double time;op=clock();long c,d,f,m,j;int t,n;printf("请输入n:");scanf("%d",&n);c=3;d=c+10000;f=3;while(1) {for(m=c; m<=d; m+=2) {for(t=0,j=3; j<=sqrt(m); j+=2) {if(m%j==0) {t=1;break;}}if(t==0 && m-f>n) {printf("最小的连续%d个合数区间为:",n);printf("[%ld,%ld] \n",f+1,f+n);ed=clock();time=ed-op;printf("\n");printf("time=%lfms\n",time);return 0;}if(t==0) f=m;}if(m>d) {c=d+2;d=c+10000;}}ed=clock();time=ed-op;printf("\n");printf("time=%lfms\n",time);return 0;}
结果:
枚举算法:最小连续n个合数。试求出最小的连续n个合数(其中n是键盘输入的任意正整数)。