31 lines
810 B
Text
31 lines
810 B
Text
/** Calculate the primes and set up for the recursive call. */
|
|
primorialSplitting[n] :=
|
|
{
|
|
if n == 0
|
|
return 1
|
|
primes = array[first[primes[], n]]
|
|
return primorialSplitting[n, 0, n-1, primes]
|
|
}
|
|
|
|
/** The actual recursive algorithm. */
|
|
primorialSplitting[n, begin, end, primes] :=
|
|
{
|
|
range = (end-begin)
|
|
if range >= 2
|
|
{
|
|
middle = (begin + end) div 2
|
|
return primorialSplitting[n, begin, middle, primes] * primorialSplitting[n, middle+1, end, primes]
|
|
}
|
|
|
|
if range == 1
|
|
return primes@begin * primes@end
|
|
|
|
if range == 0
|
|
return primes@begin
|
|
}
|
|
|
|
for n = 0 to 9
|
|
println["primorial[$n] = " + primorialSplitting[n]]
|
|
|
|
for n = [10, 100, 1000, 10000, 100000, million]
|
|
println["Length of primorial $n is " + length[toString[primorialSplitting[n]]] + " decimal digits."]
|