Project Euler

Problem #97

The first known prime found to exceed one million digits was discovered in 1999, and is a Mersenne prime of the form 2^(6972593)−1; it contains exactly 2,098,960 digits. Subsequently other Mersenne primes, of the form 2^(p)−1, have been found which contain more digits.

However, in 2004 there was found a massive non-Mersenne prime which contains 2,357,207 digits: 28433×2^(7830457)+1.

Find the last ten digits of this prime number.

Clojure: Running time = 1.63s
+;pow

+;pow-mod

(defn p97 []
  (println
    (let [mod (pow 10 10)]
      (rem (+ 1 (* 28433 (pow-mod 2 7830457 mod))) mod)
    )
  )
)

Erlang: Running time = 0.241s
+%pow

+%pow_mod

p97()->
	M=pow(10,10),
	io:format("~w~n",[(1+28433*pow_mod(2,7830457,M))rem M]).

Ruby: Running time = 0.02s
+#power_mod

def p97
  puts (power_mod(2,7830457,10**10)*28433+1)%(10**10)
end