题目描述 给出一个正整数 ? ( 2 ≤ ? ≤ 1000000 ) n(2≤n≤1000000),求 ? n 以内最长的连续合数的长度。
30 n=30,在 1 ∼ 30 1∼30 中,最长的连续合数为 24 、 25 、 26 、 27 、 28 24、25、26、27、28,长度为 5 5 。
输入格式 一个整数 ? n。
输出格式 一个整数,即连续合数的最大长度。
#include<cstdio>
using namespace std;
int h[1000005];
int zs(int n)
{
int p=1;
if(n<=2) return 0;
for(int i=2;i*i<=n;i++)
{
if(n%i==0) p=1;
}
return p;
}
int main()
{
int n,p=0,maxo[1000005],u=0,maxx=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int x=zs(i);
if(x) h[++p]=x;
if(h[p]-1==h[p-1]) maxo[u]++;
else maxo[++u]++;
}
for(int i=1;i<=u;i++)
{
if(maxo[i]>maxx) maxx=maxo[i];
}
printf("%d",maxx);
return 0;
}```