RosettaCodeData/Task/Fermat-numbers/Langur/fermat-numbers.langur
2026-04-30 12:34:36 -04:00

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}}"
}
}