29 lines
636 B
Text
29 lines
636 B
Text
val fermat = fn(i) { 2 ^ 2 ^ i + 1 }
|
|
val sz = '\u2080' # small zero code point
|
|
|
|
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 + sz: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 + sz:cp}} is prime"
|
|
} else {
|
|
writeln "F{{i + sz:cp}} factors: {{fac}}"
|
|
}
|
|
}
|