最小连续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;
}
结果: