prog.sf 772 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/ruby
  2. # a(n) is the smallest Fermat pseudoprime to base 2 such that gpf(p-1) = prime(n) for all prime factors p of a(n).
  3. # a(1) = 4369
  4. # a(2) = 1387
  5. # a(3) = 341
  6. # a(4) = 3277
  7. # a(5) = 2047
  8. # a(6) = 8321
  9. # a(7) = 31621
  10. # a(8) = 104653
  11. # a(9) = 280601
  12. # a(10) = 13747
  13. # a(11) = 2081713
  14. # a(12) = 88357
  15. # a(13) = 8902741
  16. # a(14) = 741751
  17. # a(15) = 665333
  18. # a(16) = 680627
  19. # a(17) = 2008597
  20. # a(18) = 1252697
  21. # a(19) = 3235699
  22. # a(20) = 1293337
  23. # Lower bound:
  24. # a(n) >= (2*p + 1)*(2*3*p + 1), where p = prime(n).
  25. func a(n) {
  26. var p = prime(n)
  27. var from = (2*p + 1)*(2*3*p + 1)
  28. from..Inf -> first {|k|
  29. k.is_composite && k.is_pseudoprime(2) && k.factor.all { .dec.gpf == p }
  30. }
  31. }
  32. for n in (1..10) {
  33. say ("a(#{n}) = ", a(n))
  34. }