http://projecteuler.net/index.php?section=problems&id=132

前と基本は同じ。

nがd桁で循環するなら

10^d=1 (mod n)

これを利用。

import Number hiding(powMod)
target = 10^9
powMod a n m | n < 3 = a^n `mod` m
| otherwise = let (q,r) = divMod n 2
aq = powMod a q m
in aq*aq*a^r `mod` m
main = print.sum.take 40 $[p| p<-drop 2 primes,powMod 10 target p == 1]