0

I have a variable x that I am trying to set equal to a very big number, see below.

long x =
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450;

The first issue is that I get a compiler error saying there should be a semi-colon after the first line. Is there a way around this problem ? The second issue is that I was unsure if a variable of long type can store this number. If it can't is there any numeric type that I could use to store this number?

I can put each digit of this number into an array and then work with that array. But I am hoping there is a simple fix and I can avoid doing that.

ray
  • 903
  • 1
  • 13
  • 31
  • 2
    According to the *first* match in a google search, a long in objective c is 4 bytes and can store a value from -2,147,483,648 to 2,147,483,647. For a number like the one you copied here, you are going to need a custom type. – Steven Hansen Apr 17 '16 at 22:08
  • You have 20 lines of 51 digits each. That 1020 digits. The estimated number of atoms in the entire universe is about 10^80. That's only 80 digits long. What kind of number do you have that requires over 1000 digits of precision? – rmaddy Apr 17 '16 at 22:24
  • I was working on project euler problem 8. It has become apparent that I am going about it the wrong way. – ray Apr 17 '16 at 22:27

1 Answers1

1

First off, I would think that it all needs to be on one line, any whitespace will begin a new number.
The long type is only able to store 4 or 8 bytes depending on the implementation, so the highest number you could store (assuming it is unsigned, 8 bytes) is 2^64 - 1, which is much, much smaller than the number you have provided.

Your best bet would be to find a library that supports very large numbers. I believe there are a few objective-c wrappers for libGMP, so you might want to try out one of those.

Jacob H
  • 864
  • 1
  • 10
  • 25