社区讨论

怎么改??

灌水区参与者 2已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@lz3h78yb
此快照首次捕获于
2024/07/27 09:51
2 年前
此快照最后确认于
2024/07/27 11:24
2 年前
查看原帖
题目描述 给出一个正整数 ? ( 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;
}```

回复

7 条回复,欢迎继续交流。

正在加载回复...