zoukankan      html  css  js  c++  java
  • 最强素数

    题目描述
    小李在你帮助之下轻松战胜了他的同学们,于是满怀恶意的同学出了一个题目来为难小李,作为小李神一样的队友,你又要出力了。
    素数41能写成连续6个素数之和:41=2+3+5+7+11+13。
    现在要求n以内的素数中,能表示为最多连续素数之和的那个数,如果有多个答案,请输出最大的那个素数。

    输入
    仅一行,一个整数n(1<=n<=1000000)。

    输出
    输出就一个整数,为所求的能表示为最多连续素数和的那个素数。

    样例输入
    复制样例数据
    100
    样例输出
    41

    提示
    41=2+3+5+7+11+13

    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e6+10;
    int prime[N],x[N],cnt,n;
    void is_prime()       //找素数
    {
        for(int i=2;i<=n;i++)
            {
            if(x[i]==0)
                {
                for(int j=i*2;j<=n;j+=i)
                {
                    x[j]=2;
                }
                x[i]=1;
                prime[cnt++]=i;
            }
        }
    }
    int main()
    {
        int len=0,ans=0,m;
        scanf("%d",&n);
        is_prime();
        for(int i=0;i<cnt;i++)    //从第一个开始
            {
            int t=0,tl=0;
            for(int j=i;j<cnt;j++)   //寻找到连续相加>=n,跳出来从下一个素数开始
            {
                tl++;
                t+=prime[j];
                if(t>n)  break;
                if(x[t]==1&&tl>=len) //记录答案ans
                {
                    ans=t;
                    len=tl;
                }
    
            }
        }
        printf("%d
    ",ans);
        return 0;
    }
    
    
  • 相关阅读:
    windows cluster 心跳检测阀值优化
    添加普通用户为sudoer
    每日备份脚本目录shell
    linux基础配置
    表变量 临时表 使用场景
    mysql分组排序row_number() over(partition by)
    replication_较少延迟时间
    SQL Server 参数化 PARAMETERIZATION
    thinkPHP RBAC模块
    thinkPHP 微信sdk
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319587.html
Copyright © 2011-2022 走看看