30 lines
638 B
Plaintext
30 lines
638 B
Plaintext
def primes := {
|
|
var primesCache := [2]
|
|
/** A collection of all prime numbers. */
|
|
def primes {
|
|
to iterate(f) {
|
|
primesCache.iterate(f)
|
|
for x in (int > primesCache.last()) {
|
|
if (isPrime(x)) {
|
|
f(primesCache.size(), x)
|
|
primesCache with= x
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
def primeDecomposition(var x :(int > 0)) {
|
|
var factors := []
|
|
for p in primes {
|
|
while (x % p <=> 0) {
|
|
factors with= p
|
|
x //= p
|
|
}
|
|
if (x <=> 1) {
|
|
break
|
|
}
|
|
}
|
|
return factors
|
|
}
|