32 lines
723 B
Text
32 lines
723 B
Text
library "prime_sieve.5c"
|
|
|
|
# For 1 million primes
|
|
# int val = 15485867;
|
|
int val = 1299743;
|
|
|
|
int start = millis();
|
|
int [*] primes = PrimeSieve::primes(val);
|
|
printf("%d primes (%d) in %dms\n", dim(primes), primes[dim(primes)-1], millis() - start);
|
|
|
|
int primorial(int n) {
|
|
if (n == 0) return 1;
|
|
if (n == 1) return 2;
|
|
int v = 2;
|
|
for (int i = 2; i <= n; i++) {
|
|
v *= primes[i-2];
|
|
}
|
|
return v;
|
|
}
|
|
|
|
for (int i = 0; i < 10; i++) {
|
|
printf("primorial(%d) = %d\n", i, primorial(i));
|
|
}
|
|
|
|
for (int i = 1; i < 6; i++) {
|
|
start = millis();
|
|
int p = 10**i;
|
|
int pn = primorial(p);
|
|
|
|
int digits = floor(Math::log10(pn)) + 1;
|
|
printf("primorial(%d) has %d digits, in %dms\n", p, digits, millis() - start);
|
|
}
|