long integer - Java - Can't make ProjectEuler 3 Work for a very big number (600851475143) -


resolution:
turns out there (probably) "nothing wrong" code itself; inefficient. if math correct, if leave running done friday, october 14, 2011. i'll let know!

warning: may contain spoilers if trying solve project euler #3.

the problem says this:

the prime factors of 13195 5, 7, 13 , 29.

what largest prime factor of number 600851475143 ?

here's attempt solve it. i'm starting java , programming in general, , know isn't nicest or efficient solution.

import java.util.arraylist;  public class improved {     public static void main(string[] args) {         long number = 600851475143l;         // long number = 13195l;         long check = number - 1;         boolean prime = true;          arraylist<number> allprimes = new arraylist<number>();          {             (long = check - 1; > 2; i--) {                 if (check % == 0) {                     prime = false;                 }             }              if (prime == true && number % check == 0) {                 allprimes.add(check);             }              prime = true;             check--;         } while (check > 2);          system.out.println(allprimes);     } } 

when number set 13195, program works fine, producing result [29, 13, 7, 5] should.

why doesn't work larger values of number?


closely related (but not dupe): "integer number large" error message 600851475143

the code slow; correct run unacceptably large amount of time (about n^2/2 iterations of innermost loop input n). try computing factors smallest largest, , divide out each factor find it, such as:

for (i = 2; i*i <= n; ++i) {   if (n % == 0) {     allprimes.add(i);     while (n % == 0) n /= i;   } } if (n != 1) allprimes.add(n); 

note code add prime factors, without explicit check primality.


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -