题意:

素数41可以写成六个连续素数的和:

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

在小于一百的素数中,41能够被写成最多的连续素数的和。

在小于一千的素数中,953能够被写成最多的连续素数的和,共包含连续21个素数。

在小于一百万的素数中,哪个素数能够被写成最多的连续素数的和?

思路:首先打出100000以内的素数表,然后计算出所有从第一个素数到 j 的和,然后枚举两个端点判断是否符合要求即可


/*************************************************************************
> File Name: euler050.c
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年07月01日 星期六 19时43分19秒
************************************************************************/ #include <stdio.h>
#include <inttypes.h> #define MAX_N 1000000 int32_t prime[MAX_N + 10] = {0};
int32_t primeList[MAX_N + 10] = {0};
int64_t sum[MAX_N + 10] = {0}; void Init() {
for (int32_t i = 2 ; i <= MAX_N ; i++) {
if (!prime[i]) {
primeList[++primeList[0]] = i;
}
for (int32_t j = 1 ; j <= primeList[0] ; j++) {
if (i * primeList[j] > MAX_N) break;
prime[i * primeList[j]] = 1;
if (i % primeList[j] == 0) break;
}
}
for (int32_t i = 1 ; i <= primeList[0] ; i++) {
sum[i] = sum[i - 1] + primeList[i];
}
}
int32_t main() {
Init();
int32_t maxP = 953 , maxL = 21;
for (int32_t i = 1 ; i < primeList[0] ; i++) {
for (int32_t j = i + maxL ; j <= primeList[0] ; j++) {
if (sum[j] - sum[i] > MAX_N) break;
if (prime[sum[j] - sum[i]]) continue;
if (maxL < j - i){
maxL = j - i;
maxP = sum[j] - sum[i];
}
}
}
printf("maxL = %d , maxP = %d\n",maxL , maxP);
return 0;
}

最新文章

  1. 对接第三方支付接口-获取http中的返回参数
  2. asp.net mvc4 Html.BeginForm表单提交
  3. 【转】CSS Sprites教程大全(使用方法、工具介绍)
  4. Yii2的Debug工具
  5. Financial Management[POJ1004]
  6. Qt Style Sheet实践(二):组合框QComboBox的定制
  7. 由node-webkit想到
  8. ZigZag Conversion [LeetCode]
  9. javascript 如何判断一个对象的类型
  10. 如何在xcode下面同时安装cocos2d-iphone 和 cocos2d-x模板,其实是因为很喜欢C++的缘故,当时学习的是前者,现在自己摸着石头过河了就(cocos2d-x安装失败 出错)
  11. openStack ceilometer API
  12. CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (三)Nginx负载均衡配置
  13. 追索权 Eclipse + NDK error: stray &amp;#39;\24&amp;#39; in program
  14. MVC中实现多按钮提交(转)
  15. Maven中有三大模块
  16. [NOIP2011] 聪明的质监员 二分+前缀和
  17. .net Core学习笔记1 创建简单的 .net core项目
  18. 30 ArcGIS 许可管理器常见问题(持续更新中……)
  19. SSIS - 10.执行过程任务
  20. Android系统架构与系统源码目录

热门文章

  1. VS-诊断工具和智能跟踪
  2. Shell、Xterm、Gnome-Terminal、Konsole简介(转)
  3. POJ1789&amp;amp;ZOJ2158--Truck History【最小生成树变形】
  4. UVA - 10029 Edit Step Ladders (二分+hash)
  5. oc09--NSString
  6. [ASPX] 模版引擎XTemplate与代码生成器XCoder(源码)
  7. Java Break和continue实现goto功能
  8. java网络通信编程
  9. poj 1161 Floyd+枚举
  10. ManualResetEvent和AutoResetEvent的区别,分享来的