Project Euler 50 Consecutive prime sum
2024-09-08 06:06:52
题意:
素数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;
}
最新文章
- 对接第三方支付接口-获取http中的返回参数
- asp.net mvc4 Html.BeginForm表单提交
- 【转】CSS Sprites教程大全(使用方法、工具介绍)
- Yii2的Debug工具
- Financial Management[POJ1004]
- Qt Style Sheet实践(二):组合框QComboBox的定制
- 由node-webkit想到
- ZigZag Conversion [LeetCode]
- javascript 如何判断一个对象的类型
- 如何在xcode下面同时安装cocos2d-iphone 和 cocos2d-x模板,其实是因为很喜欢C++的缘故,当时学习的是前者,现在自己摸着石头过河了就(cocos2d-x安装失败 出错)
- openStack ceilometer API
- CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (三)Nginx负载均衡配置
- 追索权 Eclipse + NDK error: stray &;#39;\24&;#39; in program
- MVC中实现多按钮提交(转)
- Maven中有三大模块
- [NOIP2011] 聪明的质监员 二分+前缀和
- .net Core学习笔记1 创建简单的 .net core项目
- 30 ArcGIS 许可管理器常见问题(持续更新中……)
- SSIS - 10.执行过程任务
- Android系统架构与系统源码目录
热门文章
- VS-诊断工具和智能跟踪
- Shell、Xterm、Gnome-Terminal、Konsole简介(转)
- POJ1789&;amp;ZOJ2158--Truck History【最小生成树变形】
- UVA - 10029 Edit Step Ladders (二分+hash)
- oc09--NSString
- [ASPX] 模版引擎XTemplate与代码生成器XCoder(源码)
- Java Break和continue实现goto功能
- java网络通信编程
- poj 1161 Floyd+枚举
- ManualResetEvent和AutoResetEvent的区别,分享来的