首页 > 代码库 > 2677: 【基础】连续非素数的最长度

2677: 【基础】连续非素数的最长度

题目:

时间限制 : 1 Sec
内存限制 : 64 Mb
提交 : 117
解决 : 71

题目描述

给出一个正整数n(2≤n≤1000000),例如n=30,在1,2,3,……30中,连续的非素数有
4 长度为1
6 长度为1
8 9 10 长度为3
12 长度为1
14 15 16 长度为3
18 长度为1
20 21 22 长度为3
24 25 26 27 28 长度为5
30 长度为1
其中,最大长度为5,即有连续的5个非素数。

输入

一个整数n

输出

一个整数,即连续非素数最大长度

样例输入 

12

样例输出 

3
 
算法:
1、筛法求素数。
2、计数器统计+打擂台。
3、输出。
 
标程:
#include<bits/stdc++.h>
using namespace std;
int c[1000001],n,lmax,an;
int main()
{
    cin>>n;
    c[1]=1;
    for (int i=2;i<=n;i++)
    {
          if (c[i]==0)
          {
                for (int j=i+i;j<=n;j+=i)
                {
                      c[j]=1;
                }
          }
    }
    lmax=0;
    an=0;
    for (int i=4;i<=n;i++)
    {
          if (c[i]==1)an++;
          if (c[i]==0)an=0;
          if (an>lmax)lmax=an;
    }
     cout<<lmax<<endl;
     return 0;
}

2677: 【基础】连续非素数的最长度