Results 1 to 2 of 2
  1. #1
    perito is offline Member
    Join Date
    Feb 2008
    Posts
    9
    Rep Power
    0

    Default 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?

  2. #2
    CaptainMorgan's Avatar
    CaptainMorgan is offline Moderator
    Join Date
    Dec 2007
    Location
    NewEngland, US
    Posts
    835
    Rep Power
    8

    Default

    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
    Vote for the new slogan to our beloved Java Forums! (closes on September 4, 2008)
    Want to voice your opinion on your IDE/Editor of choice? Vote now!
    Got a little Capt'n in you? (drink responsibly)

Similar Threads

  1. Math Related Problem
    By perito in forum New To Java
    Replies: 3
    Last Post: 03-20-2008, 06:22 PM
  2. Issue related to browser
    By sachindanayak in forum Java Servlet
    Replies: 0
    Last Post: 02-03-2008, 03:25 AM
  3. Exceptions related to DynaValidatorForm
    By rameshraj in forum JavaServer Pages (JSP) and JSTL
    Replies: 1
    Last Post: 12-27-2007, 12:44 PM
  4. Exceptions related to DynaValidatorForm
    By rameshraj in forum Java Servlet
    Replies: 0
    Last Post: 12-26-2007, 11:43 AM
  5. Bean related actions in JSP
    By Java Tip in forum Java Tip
    Replies: 0
    Last Post: 12-24-2007, 11:04 AM

Posting Permissions

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