Problem 50

问题描述:

 

The prime 41, can be written as the sum of six consecutive primes:

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

This is the longest sum of consecutive primes that adds to a prime below one-hundred.

The longest sum of consecutive primes below one-thousand that adds to a prime, contains 21 terms, and is equal to 953.

Which prime, below one-million, can be written as the sum of the most consecutive primes?


解决问题:

 

 

package projecteuler;

import java.util.Arrays;

public class Problem50 {

	public static boolean[] prime = new boolean[1000000];

	public static boolean IsPrime(long number) {

		for (int i = 2; i * i <= number; i++) {
			if (number % i == 0)
				return false;
		}
		return true;
	}

	public static void main(String[] args) {
		Arrays.fill(prime, false);
		int[] elements = new int[1000000];
		Arrays.fill(elements, 0);
		int index = 0;
		for (int i = 2; i < 1000000; i++) {
			if (IsPrime(i)) {
				prime[i] = true;
				elements[index] = i;
				index++;
			}
		}

		int len = 0;
		int sum = 0;
		int max = 0;
		for (int i = 0; i < index; i++) {
			sum = 0;
			for(int j =i; j<index; j++){
				sum += elements[j];
				if (sum > 1000000) {
					break;
				}
				if (sum<1000000&&prime[sum]) {
					if (len < j-i) {
						len = j-i;
						max = sum;
//						System.out.println("I:"+i+",J:"+j+",Sum:"+sum);
					}
				}
			}
		}
		System.out.println("Max:"+max);
		
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值