28 lines
636 B
Text
28 lines
636 B
Text
val .fermat = fn(.i) 2 ^ 2 ^ .i + 1
|
|
|
|
val .factors = fn(var .x) {
|
|
for[.f=[]] .i, .s = 2, trunc .x ^/ 2; .i < .s; .i += 1 {
|
|
if .x div .i {
|
|
.f ~= [.i]
|
|
.x \= .i
|
|
.s = trunc .x ^/ 2
|
|
}
|
|
} ~ [.x]
|
|
}
|
|
|
|
writeln "first 10 Fermat numbers"
|
|
for .i in 0..9 {
|
|
writeln $"F\(.i + 16x2080:cp) = \(.fermat(.i))"
|
|
}
|
|
writeln()
|
|
|
|
writeln "factors of first few Fermat numbers"
|
|
for .i in 0..9 {
|
|
val .ferm = .fermat(.i)
|
|
val .fac = .factors(.ferm)
|
|
if len(.fac) == 1 {
|
|
writeln $"F\(.i + 16x2080:cp) is prime"
|
|
} else {
|
|
writeln $"F\(.i + 16x2080:cp) factors: ", .fac
|
|
}
|
|
}
|