|
@@ -0,0 +1,72 @@
|
|
|
|
+# Sieve
|
|
|
|
+
|
|
|
|
+Welcome to Sieve on Exercism's PHP Track.
|
|
|
|
+If you need help running the tests or submitting your code, check out `HELP.md`.
|
|
|
|
+
|
|
|
|
+## Introduction
|
|
|
|
+
|
|
|
|
+You bought a big box of random computer parts at a garage sale.
|
|
|
|
+You've started putting the parts together to build custom computers.
|
|
|
|
+
|
|
|
|
+You want to test the performance of different combinations of parts, and decide to create your own benchmarking program to see how your computers compare.
|
|
|
|
+You choose the famous "Sieve of Eratosthenes" algorithm, an ancient algorithm, but one that should push your computers to the limits.
|
|
|
|
+
|
|
|
|
+## Instructions
|
|
|
|
+
|
|
|
|
+Your task is to create a program that implements the Sieve of Eratosthenes algorithm to find all prime numbers less than or equal to a given number.
|
|
|
|
+
|
|
|
|
+A prime number is a number larger than 1 that is only divisible by 1 and itself.
|
|
|
|
+For example, 2, 3, 5, 7, 11, and 13 are prime numbers.
|
|
|
|
+By contrast, 6 is _not_ a prime number as it not only divisible by 1 and itself, but also by 2 and 3.
|
|
|
|
+
|
|
|
|
+To use the Sieve of Eratosthenes, you first create a list of all the numbers between 2 and your given number.
|
|
|
|
+Then you repeat the following steps:
|
|
|
|
+
|
|
|
|
+1. Find the next unmarked number in your list (skipping over marked numbers).
|
|
|
|
+ This is a prime number.
|
|
|
|
+2. Mark all the multiples of that prime number as **not** prime.
|
|
|
|
+
|
|
|
|
+You keep repeating these steps until you've gone through every number in your list.
|
|
|
|
+At the end, all the unmarked numbers are prime.
|
|
|
|
+
|
|
|
|
+~~~~exercism/note
|
|
|
|
+The tests don't check that you've implemented the algorithm, only that you've come up with the correct list of primes.
|
|
|
|
+To check you are implementing the Sieve correctly, a good first test is to check that you do not use division or remainder operations.
|
|
|
|
+~~~~
|
|
|
|
+
|
|
|
|
+## Example
|
|
|
|
+
|
|
|
|
+Let's say you're finding the primes less than or equal to 10.
|
|
|
|
+
|
|
|
|
+- List out 2, 3, 4, 5, 6, 7, 8, 9, 10, leaving them all unmarked.
|
|
|
|
+- 2 is unmarked and is therefore a prime.
|
|
|
|
+ Mark 4, 6, 8 and 10 as "not prime".
|
|
|
|
+- 3 is unmarked and is therefore a prime.
|
|
|
|
+ Mark 6 and 9 as not prime _(marking 6 is optional - as it's already been marked)_.
|
|
|
|
+- 4 is marked as "not prime", so we skip over it.
|
|
|
|
+- 5 is unmarked and is therefore a prime.
|
|
|
|
+ Mark 10 as not prime _(optional - as it's already been marked)_.
|
|
|
|
+- 6 is marked as "not prime", so we skip over it.
|
|
|
|
+- 7 is unmarked and is therefore a prime.
|
|
|
|
+- 8 is marked as "not prime", so we skip over it.
|
|
|
|
+- 9 is marked as "not prime", so we skip over it.
|
|
|
|
+- 10 is marked as "not prime", so we stop as there are no more numbers to check.
|
|
|
|
+
|
|
|
|
+You've examined all numbers and found 2, 3, 5, and 7 are still unmarked, which means they're the primes less than or equal to 10.
|
|
|
|
+
|
|
|
|
+## Source
|
|
|
|
+
|
|
|
|
+### Created by
|
|
|
|
+
|
|
|
|
+- @jeslopcru
|
|
|
|
+
|
|
|
|
+### Contributed to by
|
|
|
|
+
|
|
|
|
+- @arueckauer
|
|
|
|
+- @kunicmarko20
|
|
|
|
+- @kytrinyx
|
|
|
|
+- @petemcfarlane
|
|
|
|
+
|
|
|
|
+### Based on
|
|
|
|
+
|
|
|
|
+Sieve of Eratosthenes at Wikipedia - https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
|