/* __ __ __ __ __ ___
* \ \ / / \ \ / / __/
* \ \/ / /\ \ \/ / /
* \____/__/ \__\____/__/.ɪᴏ
* ᶜᵒᵖʸʳᶦᵍʰᵗ ᵇʸ ᵛᵃᵛʳ ⁻ ˡᶦᶜᵉⁿˢᵉᵈ ᵘⁿᵈᵉʳ ᵗʰᵉ ᵃᵖᵃᶜʰᵉ ˡᶦᶜᵉⁿˢᵉ ᵛᵉʳˢᶦᵒⁿ ᵗʷᵒ ᵈᵒᵗ ᶻᵉʳᵒ
*/
package io.vavr.collection.euler;
import io.vavr.collection.Array;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class Euler07Test {
/**
* <strong>Problem 7: 10001st prime</strong>
* <p>
* By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
* <p>
* What is the 10 001st prime number?
* <p>
* See also <a href="https://projecteuler.net/problem=7">projecteuler.net problem 7</a>.
*/
@Test
public void shouldSolveProblem7() {
assertThat(prime(1)).isEqualTo(2);
assertThat(prime(2)).isEqualTo(3);
assertThat(prime(3)).isEqualTo(5);
assertThat(prime(4)).isEqualTo(7);
assertThat(prime(5)).isEqualTo(11);
assertThat(prime(6)).isEqualTo(13);
assertThat(prime(10_001)).isEqualTo(104_743);
}
private static final Array<Integer> PRIMES = Array.ofAll(PrimeNumbers.primes().take(10_001));
private static long prime(int index) {
return PRIMES.get(index - 1);
}
}