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;
    }
    
    
  • 相关阅读:
    vue 使用echarts 柱状图使用图片显示
    Devexpress分组小计
    小写转大写
    预览打印
    LINQ
    结束任务管理器进程
    游标
    查看死锁
    sql 分页
    压缩解压缩传输的数据
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319587.html
Copyright © 2011-2022 走看看