怎么改??
  • 板块灌水区
  • 楼主zcx20242024
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/7/27 09:50
  • 上次更新2024/7/27 11:24:51
查看原帖
怎么改??
1377954
zcx20242024楼主2024/7/27 09:50

题目描述 给出一个正整数 ? ( 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。

输出格式 一个整数,即连续合数的最大长度。

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,max[10000005],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]) max[u]++;
		else max[++u]++;
	}
	for(int i=1;i<=u;i++)
	{
		if(max[i]>maxx) maxx=max[i];
	}
	printf("%d",maxx);
	return 0;
}```
2024/7/27 09:50
加载中...