Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
45
Task/Primorial-numbers/Java/primorial-numbers.java
Normal file
45
Task/Primorial-numbers/Java/primorial-numbers.java
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
import java.math.BigInteger;
|
||||
|
||||
public class PrimorialNumbers {
|
||||
final static int sieveLimit = 1300_000;
|
||||
static boolean[] notPrime = sieve(sieveLimit);
|
||||
|
||||
public static void main(String[] args) {
|
||||
for (int i = 0; i < 10; i++)
|
||||
System.out.printf("primorial(%d): %d%n", i, primorial(i));
|
||||
|
||||
for (int i = 1; i < 6; i++) {
|
||||
int len = primorial((int) Math.pow(10, i)).toString().length();
|
||||
System.out.printf("primorial(10^%d) has length %d%n", i, len);
|
||||
}
|
||||
}
|
||||
|
||||
static BigInteger primorial(int n) {
|
||||
if (n == 0)
|
||||
return BigInteger.ONE;
|
||||
|
||||
BigInteger result = BigInteger.ONE;
|
||||
for (int i = 0; i < sieveLimit && n > 0; i++) {
|
||||
if (notPrime[i])
|
||||
continue;
|
||||
result = result.multiply(BigInteger.valueOf(i));
|
||||
n--;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static boolean[] sieve(int limit) {
|
||||
boolean[] composite = new boolean[limit];
|
||||
composite[0] = composite[1] = true;
|
||||
|
||||
int max = (int) Math.sqrt(limit);
|
||||
for (int n = 2; n <= max; n++) {
|
||||
if (!composite[n]) {
|
||||
for (int k = n * n; k < limit; k += n) {
|
||||
composite[k] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return composite;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue