prog.sf 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/ruby
  2. # Let a(n) be the smallest odd prime p such that q^((p-1)/2) == -1 (mod p) for every prime q <= prime(n).
  3. # Let b(n) be the smallest odd composite k such that q^((k-1)/2) == -1 (mod k) for every prime q <= prime(n).
  4. func a(n) {
  5. var primes = n.prime.primes
  6. 3..Inf `by` 2 -> lazy.grep{.is_prime}.first {|p|
  7. primes.all {|q|
  8. powmod(q, (p-1)/2, p) == p-1
  9. }
  10. }
  11. }
  12. func b(n) {
  13. var primes = n.prime.primes
  14. 3..Inf `by` 2 -> lazy.grep{!.is_prime}.first {|k|
  15. primes.all {|q|
  16. powmod(q, (k-1)/2, k) == k-1
  17. }
  18. }
  19. }
  20. #~ Let a'(n) be the smallest odd prime p such that b^((p-1)/2) == 1 (mod p) for every natural b < prime(n).
  21. #~ ____________
  22. #~ Let b'(n) be the smallest odd composite k such that b^((k-1)/2) == 1 (mod k) for every natural b < prime(n).
  23. for k in (1..100) {
  24. print(a(k), ", ")
  25. }
  26. for k in (1..100) {
  27. print(b(k), ", ")
  28. }
  29. # a(n) = {3, 5, 17, 17, 17, 83, 167, 167, 227, 2273, 5297, 5297, 69467, 69467, 116387, ...}
  30. # Beside the first term, a(n) is equivalent to A237437.
  31. # a(n) = {3, 5, 43, 43, 67, 67, 163, 163, 163, 163, 163, 163, 74093, 170957, 360293, 679733, 2004917, 2004917, ...}
  32. # a(n) appears to be already in the OEIS as A191089.
  33. # b(n) = {3277, 1530787, ...}