wood burning stoves 2.0*
The moose likes Java in General and the fly likes Project Euler problem 10 Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Project Euler problem 10" Watch "Project Euler problem 10" New topic
Author

Project Euler problem 10

rajarshi roy
Greenhorn

Joined: Feb 14, 2010
Posts: 21
I was trying to solve problem 10 of Project Euler .I wrote a code ,but it does not work for higher values.


Can anyone please help me out???
Wouter Oet
Saloon Keeper

Joined: Oct 25, 2008
Posts: 2700

You'll probably overflow the long. Try it with BigInteger.


"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler
Please correct my English.
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41604
    
  55
What do you mean by "higher values" - higher than 2000000? I think even an "int" should work fine for all involved fields for the original problem.

If you start with "boolean b = true", then you don't need the "if (i == num)" block. One should avoid accessing loop variables outside of the "for" block.


Ping & DNS - my free Android networking tools app
Mike Simmons
Ranch Hand

Joined: Mar 05, 2008
Posts: 3012
    
  10
rajarshi roy wrote:I wrote a code ,but it does not work for higher values.

In what way does it not work? Do you get the wrong answer? Does it throw an exception? Does it take an unacceptably long time to finish?

Looking at your code, I suspect it's the latter. It's going to take a long time to check all those values to see if they're prime. To find is a value n is prime, do you really have to loop through every number less than n? There are a couple of huge improvements you can make on this method that will make it much faster.

Wouter Oet wrote:You'll probably overflow the long. Try it with BigInteger.

I'm pretty sure this problem can be done without BigInteger. All the primes are less than 2 million, and there are much less than 2 million of them, so their sum should be much less than 2 million times 2 million, which is 4 trillion. That should fit easily inside a long.
Hunter McMillen
Ranch Hand

Joined: Mar 13, 2009
Posts: 492

You should look up something called the Sieve of Eratosthenes. It is a really quick way to test if a number is prime.

-Hunter


"If the facts don't fit the theory, get new facts" --Albert Einstein
rajarshi roy
Greenhorn

Joined: Feb 14, 2010
Posts: 21
the code works fine for smaller values,say below 100000.But it takes exceptionally long time to finish for values like 1000000.I will try to change the code.Thanks for your advices.
 
wood burning stoves
 
subject: Project Euler problem 10