社区讨论
怎么改??
灌水区参与者 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 条回复,欢迎继续交流。
正在加载回复...