19 lines
617 B
Text
19 lines
617 B
Text
func chernick_carmichael_factors (n, m) {
|
|
[6*m + 1, 12*m + 1, {|i| 2**i * 9*m + 1 }.map(1 .. n-2)...]
|
|
}
|
|
|
|
func is_chernick_carmichael (n, m) {
|
|
(n == 2) ? (is_prime(6*m + 1) && is_prime(12*m + 1))
|
|
: (is_prime(2**(n-2) * 9*m + 1) && __FUNC__(n-1, m))
|
|
}
|
|
|
|
func chernick_carmichael_number(n, callback) {
|
|
var multiplier = (n>4 ? 2**(n-4) : 1)
|
|
var m = (1..Inf -> first {|m| is_chernick_carmichael(n, m * multiplier) })
|
|
var f = chernick_carmichael_factors(n, m * multiplier)
|
|
callback(f...)
|
|
}
|
|
|
|
for n in (3..9) {
|
|
chernick_carmichael_number(n, {|*f| say "a(#{n}) = #{f.join(' * ')}" })
|
|
}
|