1. Member Join Date
Feb 2008
Posts
9
Rep Power
0

## Math Related Problem

Im trying to solve this
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?
I wrote this code, it should work but it doesnt !
It works correctly for number under 100, but it doesnt even work for numbers under 1000
it gives a wrong answer 281 (it must be 953)
can anyone tell me where im going wrong?
Java Code:
```public class ConescutivePrimes
{
public static boolean isPrime(int nbr)
{
boolean isNPrime=true;
for (int i = 2; i < nbr; i++)
if ((nbr != i) && (nbr % i == 0))
{
isNPrime = false;
break;
}
if (isNPrime == true) return true;
else return false;
}
public static void main(String[] args)
{
int maxValue=1000,sum=0,lastPrimeSum=0;
for (int i=2;i<maxValue;i++)
{
if (isPrime(i) == true && sum+i<maxValue)
{
sum+=i;
if (isPrime(sum)==true)
lastPrimeSum=sum;
}
}
System.out.println(lastPrimeSum);
}
}```
change the value of maxValue to 100 and see the correct answer,
change it to 1000 and see it go all wrong... WHY?  Reply With Quote

2. ## Hi perito. I haven't had time to correct your code, but I ran a simple print test... 281 IS the last prime that your code finds - therefore it is output. You do not implement a check to correctly sum up the numbers. Here's the output from my print test:
Java Code:
`2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 = 281`
Here's a different test showing what sum is at each output:
Java Code:
`2(2) 3(5) 5(10) 7(17) 11(28) 13(41) 17(58) 19(77) 23(100) 29(129) 31(160) 37(197) 41(238) 43(281) 47(328) 53(381) 59(440) 61(501) 67(568) 71(639) 73(712) 79(791) 83(874) 89(963) = 281`
Since your code requires consecutive sums, you may wish to try re-initializing i once it's reached 1000 and the correct answer is still not found(how you do this I leave for you- maybe an outer surrounding loop?). For example, you start off with int i = 2; and since the sum of the above output is actually 963, it lead me to think you're only ten off... thus what would happen if i was started or restarted off at 7 instead of 2? It would be ten subtracted- hence, 953. Example, for int i = 7; we get:
Java Code:
`7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 = 953`  Reply With Quote

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•