题目
对于指定的正整数m(1<=m<=200),在正整数中搜索最小的连续m个合数,输出该区间的起始数与终止数
解析
从f=3开始找相邻的素数f,i构成的区间[f,i],检查此区间中是否有连续m个合数(i-f>m),
若有则输出:[f+1,f+m],搜索结束。
否则:f=i, 找下第一个相邻的素数构成的区间[f,i],继续判断
#include<iostream>#include<cmath>using namespace std;int main(){int m,f,i,j,t;cout<<"input m:";cin>>m;f=i=3;while(1){i+=2;for(t=0,j=3;j<=sqrt(i);j++){if(i%j==0){t=1;break;}}if(t==0){if(i-f>m){cout<<f+1<<","<<f+m<<endl;break;}elsef=i;}}}