verify_output.sf 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/usr/bin/ruby
  2. # a(11) found m = 2138939853538560
  3. # a(11) found m = 2526176995612160
  4. # a(10) found m = 4009513558110720
  5. # a(10) found m = 4196243334041600
  6. # a(10) found m = 4250890925448960
  7. # a(10) found m = 4264772670403840
  8. # a(10) found m = 4694331125702400
  9. # a(11) found m = 4729522651983360
  10. # a(10) found m = 4790852606791680
  11. # a(10) found m = 4996830163610880
  12. # a(10) found m = 5101817933587200
  13. # a(10) found m = 5264522678120960
  14. # a(10) found m = 5431371042905600
  15. # a(10) found m = 5523092697191680
  16. # a(10) found m = 5525194236573440
  17. # a(10) found m = 5727625856001280
  18. # a(10) found m = 5778987687573760 (very close)
  19. # a(10) found m = 5852062539581440
  20. # a(10) found m = 5937381618013440
  21. # a(10) found m = 5948907374009600
  22. # a(10) found m = 5968911763043840
  23. # a(11) found m = 6026433544209920
  24. # a(10) found m = 6217329296404480
  25. # a(10) found m = 6225694946248960
  26. # a(10) found m = 6246007399831040
  27. # a(10) found m = 6312132216947200
  28. # a(10) found m = 6457158628226560
  29. # a(10) found m = 6871581212112640
  30. # a(10) found m = 6892136392410880
  31. # a(10) found m = 6932779745830400
  32. # a(10) found m = 6961627426082560
  33. # a(10) found m = 7102360767040000
  34. # a(10) found m = 7406828409708800
  35. # a(10) found m = 7524854188308480
  36. # a(10) found m = 7703508535374080
  37. # a(10) found m = 7732872117268480
  38. # a(10) found m = 7828103794118400
  39. # a(10) found m = 7965222599924480
  40. # a(9) found m = 8012463159733760
  41. # a(9) found m = 8019012379031040
  42. # a(9) found m = 8024799172980480
  43. # a(9) found m = 8024968426908160
  44. # a(9) found m = 8028016589340160
  45. # a(9) found m = 8028450913889280
  46. func chernick_carmichael_factors (n, m) {
  47. [6*m + 1, 12*m + 1, {|i| 2**i * 9*m + 1 }.map(1 .. n-2)...]
  48. }
  49. func is_chernick_carmichael (n, m) {
  50. (n == 2) ? (is_prime(6*m + 1) && is_prime(12*m + 1))
  51. : (is_prime(2**(n-2) * 9*m + 1) && __FUNC__(n-1, m))
  52. }
  53. var seen = Set()
  54. ARGF.each {|line|
  55. if (line =~ /\bm = (\d+)/) {|match|
  56. var m = Num(match[0])
  57. next if seen.has(m)
  58. seen << m
  59. var a = chernick_carmichael_factors(12, m)
  60. for k in (3..a.len) {
  61. var t = a.first(k).prod
  62. say t if t.is_carmichael
  63. }
  64. if (a.all_prime) {
  65. die "a(12) <= #{a.prod}"
  66. }
  67. }
  68. }
  69. #var m = 91180054183680
  70. #var a = chernick_carmichael_factors(12, m)
  71. __END__
  72. for k in (3..a.len) {
  73. var t = a.first(k).prod
  74. say t if t.is_carmichael
  75. }
  76. say ''
  77. # If all three are true, then a(12) has been found
  78. say is_chernick_carmichael(10, m) # true if first 10 factors are prime
  79. say is_chernick_carmichael(11, m) # true if first 11 factors are prime
  80. say is_chernick_carmichael(12, m) # true if first 12 factors are prime
  81. say ''
  82. say chernick_carmichael_factors(12, m).map{.is_prime}
  83. say chernick_carmichael_factors(11, m).last.factor
  84. say chernick_carmichael_factors(12, m).last.factor
  85. #~ say ''
  86. #~ say chernick_carmichael_factors(11,m).prod.is_carmichael
  87. #~ say chernick_carmichael_factors(12,m).prod.is_carmichael