Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Need help with BigInteger

 
Nathan Leniz
Ranch Hand
Posts: 132
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Having a bit of a problem working on problem 16 on the project euler site.

Given BigInteger base = BigInteger.valueOf(2); for both examples...

<blockquote>code:
<pre name="code" class="core">
BigInteger total = BigInteger.ZERO;
total = base.pow(1000);
</pre>
</blockquote>

gives different output than
<blockquote>code:
<pre name="code" class="core">
BigInteger total = BigInteger.ZERO;
for (int i = 0; i < 1000; i++)
{
total = total.multiply(base);
}
</pre>
</blockquote>

I'm really at a loss. Perhaps it's late and I'm not thinking clearly, but later methods to sum up the individual digits of total aren't giving me the right answer.
 
Campbell Ritchie
Sheriff
Pie
Posts: 49776
69
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
It shouldn't be at all difficult to count the digits of your result starting from BigInteger.ZERO. There will be one "0".

Try BigInteger.ONE

And please supply a link using the URL button so we can find your puzzles more quickly.
 
Nathan Leniz
Ranch Hand
Posts: 132
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Sorry, getting late. Rather than using BigInteger.Zero in the second loop, I used BigInteger.valueOf(2).

And I found out what it's doing, the second way is actually taking it to the 1001st power. Still no luck on the answer.

Oh, here is the link. Project Euler problem 16.
 
Ulf Dittmer
Rancher
Posts: 42968
73
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Just as an aside, I've done a fair number of the Project Euler problems in Java, and I've always considered using the BigInteger class as a bit of cheating. It's more interesting to come up with alternative solutions, IMO. The whole point is to learn about algorithms and math, after all.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic