129 Repunit divisibility.sf 455 B

123456789101112131415161718192021222324252627282930
  1. #!/usr/bin/ruby
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 11 May 2017
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=129
  7. # Runtime: 11.569s (previously: 29.843s)
  8. for n in (1e6 .. Inf) {
  9. n.is_coprime(10) || next
  10. var k = 1
  11. var sum = 1
  12. loop {
  13. sum = addmod(sum, 10.powmod(k, n), n)
  14. sum.is_zero && break
  15. ++k
  16. }
  17. if (k+1 > 1e6) {
  18. say "A(#{n}) = #{k+1}"
  19. break
  20. }
  21. }