Pages

Showing posts with label Euler Problem 1-9. Show all posts
Showing posts with label Euler Problem 1-9. Show all posts

Tuesday, September 8, 2009

Euler Problem 9 solution

Time (s): ~0.001
package margusmartseppcode.From_1_to_9;

public class Problem_9 {
 static long getPythSum(long nr) {
  double a, b, c, sqn = Math.sqrt(nr);
  for (int i = 1; i < sqn; i += 2)
   for (int j = 2; j < sqn; j += 2) {
    a = Math.abs(j * j - i * i);
    b = 2 * i * j;
    c = i * i + j * j;
    if ((a + b + c) == nr)
     return (long) (a * b * c);
   }

  return -1;
 }

 public static void main(String[] args) {
  System.out.println(getPythSum(1000));
 }
}

Euler Problem 8 solution

Time (s): ~0.001
package margusmartseppcode.From_1_to_9;

public class Problem_8 {
 public static void main(String[] args) {
  char[] nr = ("7316717653133062491922511967442657474235534919493"
    + "496983520312774506326239578318016984801869478851843"
    + "858615607891129494954595017379583319528532088055111"
    + "254069874715852386305071569329096329522744304355766"
    + "896648950445244523161731856403098711121722383113622"
    + "298934233803081353362766142828064444866452387493035"
    + "890729629049156044077239071381051585930796086670172"
    + "427121883998797908792274921901699720888093776657273"
    + "330010533678812202354218097512545405947522435258490"
    + "771167055601360483958644670632441572215539753697817"
    + "977846174064955149290862569321978468622482839722413"
    + "756570560574902614079729686524145351004748216637048"
    + "440319989000889524345065854122758866688116427171479"
    + "924442928230863465674813919123162824586178664583591"
    + "245665294765456828489128831426076900422421902267105"
    + "562632111110937054421750694165896040807198403850962"
    + "455444362981230987879927244284909188845801561660979"
    + "191338754992005240636899125607176060588611646710940"
    + "507754100225698315520005593572972571636269561882670"
    + "428252483600823257530420752963450").toCharArray();
  int tmp = 0, max = 0;

  for (int i = 4; i < nr.length; i++, tmp = 1) {
   for (int j = -4; j <= 0; j++)
    tmp *= (nr[i + j] - '0');

   if (tmp > max)
    max = tmp;
  }
  System.out.println(max);
 }
}

Euler Problem 7 solution

Time (s): ~0.011
package margusmartseppcode.From_1_to_9;

import java.util.BitSet;

public class Problem_7 {
 static long getSoExnt(int max, int nr) {
  if (max < 1 || nr < 1 || max < nr)
   return -1;
  if (nr < 4)
   return (nr == 1 ? 2 : (nr == 2 ? 3 : 5));
  BitSet sieve = new BitSet(max / 2);

  for (int i = 5, f = 1, c = 2; i <= max; i += 3 - f, f = -f)
   if (sieve.get(i >> 1) == false) {
    int add = i << 1;
    for (int j = i + add; j < max; j += add)
     sieve.set(j >> 1, true);
    if (++c >= nr)
     return i;
   }

  return -1;
 }

 public static void main(String[] args) {
  System.out.println(getSoExnt(120000, 10001));
 }
} 

Euler Problem 6 solution

Time (s): ~0.001
package margusmartseppcode.From_1_to_9;

public class Problem_6 {
 public static void main(String[] args) {
  int size = 100;
  long qos = (int) Math.pow(size * (size + 1) / 2, 2);
  long soq = size * (size + 1) * (2 * size + 1) / 6;

  System.out.println(qos - soq);
 }
}

Euler Problem 5 solution

Time (s): ~0.001
package margusmartseppcode.From_1_to_9;

public class Problem_5 {
 static long gcd(long a, long b) {
  if (b == 0)
   return Math.abs(a);
  return gcd(b, a % b);
 }

 static long lcm(long a, long b) {
  return (a * b) / gcd(a, b);
 }

 public static void main(String[] args) {
  long result = 1;

  for (long i = 2; i < 21; i++)
   result = lcm(result, i);

  System.out.println(result);
 }
}

Euler Problem 4 solution

Time (s): ~0.018
package margusmartseppcode.From_1_to_9;

public class Problem_4 {
 static boolean isPalindrome(String p) {
  return p.equals(new StringBuilder(p).reverse().toString());
 }

 public static void main(String[] args) {
  int limit = 999, max = 0;

  for (int i = limit; i > 101; i -= 2)
   for (int j = i; j > 101 && i * j > max; j -= 2)
    if (isPalindrome("" + (i * j)))
     max = i * j;

  System.out.println(max);
 }
}

Euler Problem 3 solution

Time (s): ~0.001
package margusmartseppcode.From_1_to_9;

public class Problem_3 {
 static long lpf(long nr) {
  long max = 0;

  for (long i = 2; i <= nr / i; i++)
   while (nr % i == 0) {
    max = i;
    nr = nr / i;
   }

  return nr > 1 ? nr : max;
 }

 public static void main(String[] args) {
  System.out.println(lpf(600851475143L));
 }
}

Euler Problem 2 solution

Time (s): ~0.001
package margusmartseppcode.From_1_to_9;

public class Problem_2 {
 static final double gold_r = Math.pow((1 + Math.sqrt(5)) / 2, 3);

 public static void main(String[] args) {
  long size = 4000000, sum = 0;
  double f = 2;

  for (; f < size; f = Math.round(f * gold_r))
   sum += f;

  System.out.println(sum);
 }
}

Euler Problem 1 solution

Time (s): ~0.001
package margusmartseppcode.From_1_to_9;

public class Problem_1 {
 // Arithmetic progression
 static int AP(int nr) {
  return nr * (nr + 1) / 2;
 }

 static int nAP(int nr, int multible) {
  return multible * nr * (nr + 1) / 2;
 }

 public static void main(String[] args) {
  int size = 999;
  int result = nAP(size / 3, 3) + nAP(size / 5, 5)
    - nAP(size / 15, 15);

  System.out.println(result);
 }
}