41 lines
667 B
Plaintext
41 lines
667 B
Plaintext
// Numeric helpers built on the math builtins.
|
|
|
|
fn factorial(n) {
|
|
var product = 1
|
|
var i = 2
|
|
while (i <= n) {
|
|
product = product * i
|
|
i = i + 1
|
|
}
|
|
return product
|
|
}
|
|
|
|
fn gcd(a, b) {
|
|
var x = abs(a)
|
|
var y = abs(b)
|
|
while (y != 0) {
|
|
let remainder = x % y
|
|
x = y
|
|
y = remainder
|
|
}
|
|
return x
|
|
}
|
|
|
|
fn clamp(value, low, high) {
|
|
return max(low, min(value, high))
|
|
}
|
|
|
|
fn isPrime(n) {
|
|
if (n < 2) {
|
|
return false
|
|
}
|
|
var divisor = 2
|
|
while (divisor * divisor <= n) {
|
|
if (n % divisor == 0) {
|
|
return false
|
|
}
|
|
divisor = divisor + 1
|
|
}
|
|
return true
|
|
}
|