prog.sf 757 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/ruby
  2. # Find the smallest prime factor of 2^(2^prime(n) - 1) - 1.
  3. # https://oeis.org/A309130
  4. # Known terms:
  5. # 7, 127, 2147483647, 170141183460469231731687303715884105727, 47, 338193759479, 231733529, 62914441, 2351, 1399, 295257526626031, 18287, 106937, 863, 4703, 138863, 22590223644617
  6. func trial_factor(n, k) {
  7. if (n.len < 50) {
  8. return n.factor
  9. }
  10. #n.ecm_factor
  11. n.trial_factor(k)
  12. }
  13. var n = 15
  14. var p = prime(n)
  15. var e = ipow(2, p)-1
  16. var r = znorder(2, e)
  17. for i in (1..1e6) {
  18. var k = (i*r + 1)
  19. k.is_prime || next
  20. say "Testing: #{k}"
  21. var F = trial_factor(2**k - 1, 1e8)
  22. for f in F {
  23. var t = powmod(2, e, f)
  24. if (t == 1) {
  25. say "[#{k}] Found: #{f}"
  26. }
  27. }
  28. }