diff --git a/Doc/Sd1/appendix.xml b/Doc/Sd1/appendix.xml index d30e37a7deb7d7a4e2071428776ea1e614fe7c63..d4e7cbf27fadb2c9d6c8248bdbac7b44fa2eca20 100644 --- a/Doc/Sd1/appendix.xml +++ b/Doc/Sd1/appendix.xml @@ -219,7 +219,7 @@ <para>We start with the first task by implementing the <link xlink:href="https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes#Euler.27s_Sieve">Euler - sieve algorithm</link>. We may use a boolean array representing the + sieve algorithm</link>. We may use a boolean array representing e.g. the first 100 primes:</para> <programlisting language="java">boolean[] nonPrimes = new boolean[100];</programlisting> @@ -237,9 +237,9 @@ value | t| t| f| f| t| f| t| f| t| t| t| f| t| f| t ...</programlisting> <para>Since we intend to deal with a large number <code xlink:href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code> - of values we only consider odd values since even numbers are never prime - except for the value 2. Thus 0 will represent 1, 1 will represent 2 and - n will represent 2 * n + 1:</para> + of values (rather than just 100 ) we only consider odd values since even + numbers are never prime except for the value 2. Thus 0 will represent 1, + 1 will represent 2 and n will represent 2 * n + 1:</para> <programlisting language="non">Index | 0| 1| 2| 3| 4| 5| 6| 7| ... -----------+--+--+--+--+--+---+---+---+ ... @@ -283,8 +283,11 @@ value | f| f| f| f| t| f| f| t| ...</programlisting> <tip> <para>Decompose the <link xlink:href="https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes#Euler.27s_Sieve">Euler - sieve algorithm</link> into smaller tasks and write appropriate - tests.</para> + sieve algorithm</link> into smaller tasks and write appropriate tests. + Start with small <code>limit</code> values (like 20) and extend to + <code + xlink:href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code> + step by step.</para> </tip> <para>Once you've finished implementing the sieve continue by @@ -358,7 +361,7 @@ public class PrimeFrequencySet { private final static int initialCapacity = 16; - private PrimeFrequency[] store = new PrimeFrequency[initialCapacity]; + private PrimeFrequency[] store = new PrimeFrequency[initialCapacity]; // May grow due to new factors. /** * Searching for the existence of a {@link PrimeFrequency} with a matching @@ -423,7 +426,16 @@ public class PrimeFrequencySet { <para>This allows for decomposing arbitrary <code>int</code> values into their prime factors. We show a unit test example:</para> - <programlisting language="java"> PrimeFrequencySet pfs = sieve.getPrimeFactors(12); <co + <programlisting language="java">/** + * Prime factor decomposition. + */ +public class FactorTest { + + final Sieve sieve = new Sieve(100000); + + @Test + public void test2 () { + PrimeFrequencySet pfs = sieve.getPrimeFactors(12); <co linkends="sd1ListingTestPrimeFactorDecompose-1" xml:id="sd1ListingTestPrimeFactorDecompose-1-co"/> Assert.assertEquals(2, pfs.getLength()); <co @@ -434,7 +446,9 @@ public class PrimeFrequencySet { xml:id="sd1ListingTestPrimeFactorDecompose-3-co"/> Assert.assertEquals(new PrimeFrequency(3, 1), pfs.get(1)); <co linkends="sd1ListingTestPrimeFactorDecompose-4" - xml:id="sd1ListingTestPrimeFactorDecompose-4-co"/></programlisting> + xml:id="sd1ListingTestPrimeFactorDecompose-4-co"/> + } +}</programlisting> <calloutlist> <callout arearefs="sd1ListingTestPrimeFactorDecompose-1-co"