<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Antimatroid, The &#187; Dynamic Programming</title>
	<atom:link href="http://antimatroid.wordpress.com/tag/dynamic-programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://antimatroid.wordpress.com</link>
	<description>niche for the aesthetics, mathematics and computer science</description>
	<lastBuildDate>Tue, 01 Dec 2009 14:00:24 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='antimatroid.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/4f7d497af5ea099e7d73389ebe338967?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Antimatroid, The &#187; Dynamic Programming</title>
		<link>http://antimatroid.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://antimatroid.wordpress.com/osd.xml" title="Antimatroid, The" />
		<item>
		<title>Integer Factorization by Dynamic Programming with Number Theoretic Applications</title>
		<link>http://antimatroid.wordpress.com/2009/04/01/integer-factorization-by-dynamic-programming-with-number-theoretic-applications/</link>
		<comments>http://antimatroid.wordpress.com/2009/04/01/integer-factorization-by-dynamic-programming-with-number-theoretic-applications/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 07:00:45 +0000</pubDate>
		<dc:creator>lewellen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C# 2.0]]></category>
		<category><![CDATA[Dynamic Programming]]></category>
		<category><![CDATA[Integer Factorization]]></category>
		<category><![CDATA[Number Theory]]></category>

		<guid isPermaLink="false">http://antimatroid.wordpress.com/?p=615</guid>
		<description><![CDATA[Having been a participant of a number of mathematical programming competitions over the years, I&#8217;ve had to find a number of efficient ways of implementing many common Number Theoretic Functions. In this write up, I&#8217;m going to go over a method I&#8217;ve found useful for easily factoring numbers using a sieving method, go over some [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=antimatroid.wordpress.com&blog=4448583&post=615&subd=antimatroid&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Having been a participant of a number of mathematical programming competitions over the years, I&#8217;ve had to find a number of efficient ways of implementing many common Number Theoretic Functions. In this write up, I&#8217;m going to go over a method I&#8217;ve found useful for easily factoring numbers using a sieving method, go over some the implementation of a few number theory functions along with time complexity analysis of each. The cornerstone to many of these implementations relies on the ability to quickly factor integers and find primes.</p>
<p>One of the most popular methods of for finding primes is the <a target="blank" href="http://mathworld.wolfram.com/SieveofEratosthenes.html">Sieve of Eratosthenes</a>. The algorithm starts by populating a table with every positive integer from 2 to a ceiling value. Then find the first integer not yet crossed off, in the case 2, and eliminate every multiple of 2 from the table then return to 2 and find the next positive integer not yet crossed off and repeat the procedure until the end of the table is reached. The method is fine and all, but a lot of really great information is lost in that computation. Here is a sample implementation:</p>
<pre class="brush: csharp;">
bool[] isPrime = new bool[400];
for (uint n = 2; n &lt; isPrime.Length; n++)
    isPrime[n] = true;
for (uint n = 2; n &lt; isPrime.Length; n++)
    if (isPrime[n])
        for (uint m = 2, c = 0; (c = m * n) &lt; isPrime.Length; m++)
            isPrime[c] = false;
</pre>
<p>On the other hand, say we approach sieve a little differently. Create an empty table as large as the ceiling value. Start at 2 and for every multiple of 2, create a record that has two parts: 2 and half of the multiple. Return to 2 and find the next integer in the table that has yet to be recorded, in this case 3. For every multiple of 3, create a record that has two parts: 3 and third of the multiple (only if the multiple was not previously recorded. E.g., 6 because 2 previously recorded the record). Return to 3 and find the next integer in the table that has yet to be recorded so on and so forth until every integer in the table has been recorded.</p>
<p>The following graphic demonstrates this process for a ceiling values of 25. If we wish to factor 16, we go to 16&#8217;s record (2, 8), follow to 8&#8217;s record (2,4), again follow 4&#8217;s record (2, 2) and finally 2&#8217;s record (2, &lambda;). Thus the prime factorization of 16 is 2, 2, 2, 2.</p>
<p><a href="http://antimatroid.files.wordpress.com/2009/05/factor_table_polar.png"><img src="http://antimatroid.files.wordpress.com/2009/05/factor_table_polar.png?w=700&#038;h=760" alt="factor_table_polar" title="factor_table_polar" width="700" height="760" class="aligncenter size-full wp-image-622" /></a></p>
<p>It should be apparent that this algorithm is a simple dynamic programming solution that yields two major results: </p>
<ol>
<li>We have factored every positive integer up to a ceiling value.</li>
<li>We have found every positive prime integer up to a ceiling value.</li>
</ol>
<p>And one major draw back</p>
<ol>
<li>Uses a lot of memory as a trade off for speed.</li>
</ol>
<p>Let&#8217;s get into the C# implementation. To start off, we need a record class that&#8217;ll store the information about the first prime that divides an entry and the composite to jump to if the record corresponds to a composite. </p>
<pre class="brush: csharp;">
public class Record {
    public uint Prime {get; set;}
    public uint? JumpTo {get; set;}
}
</pre>
<p>We&#8217;ll have a class called NumberTheory and assume that it has the following structure. If you want, you could make this a Singleton class but I felt it was unnecessary for the scope of this write up.</p>
<pre class="brush: csharp;">
public class NumberTheory {
    private Record[] table;

    ...
}
</pre>
<p>It makes sense to put the core algorithm in the constructor and then have member methods for each of the functions we&#8217;d like to have. It should be assumed that for the lifetime of the class that the largest value ever called on the methods will be N otherwise an exception should be thrown by the methods (omitted here for brevity).</p>
<pre class="brush: csharp;">
public NumberTheory(uint N){
    uint c = 0;
    table = new Record[N+1];
    for(uint n = 2; n &lt; table.Length; n++) {
        if(table[n] != null)
            continue;
        table[n] = new Record() { Prime = n };
        for(uint m = 2; (c = n * m) &lt; table.Length; m++)
            if(table[c] == null)
                table[c] = new Record() { JumpTo = m, Prime = n };
    }
}
</pre>
<p>The time complexity of the implementation can be derived using some analysis and by having some knowledge of certain identities. Starting from 2 there are N &#8211; 2 numbers to check of which 1/2 will be visited by the interior loop, starting from 3 there are N &#8211; 3 numbers to check of which 1/3 will be visited visited by the interior loop, so on and so forth leading to the following summation:<br />
<img src='http://l.wordpress.com/latex.php?latex=%5Cdisplaystyle+T%28n%29+%3D+%5Csum_%7Bp+%5Cle+n%7D+%5Cleft%28+%5Cfrac%7B1%7D%7Bp%7D%28n+-+p%29+%5Cright%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\displaystyle T(n) = \sum_{p \le n} \left( \frac{1}{p}(n - p) \right)' title='\displaystyle T(n) = \sum_{p \le n} \left( \frac{1}{p}(n - p) \right)' class='latex' /><br />
<img src='http://l.wordpress.com/latex.php?latex=%5Cdisplaystyle+T%28n%29+%3D+%5Csum_%7Bp+%5Cle+n%7D+%5Cleft%28+%5Cfrac%7Bn%7D%7Bp%7D+-+1+%5Cright%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\displaystyle T(n) = \sum_{p \le n} \left( \frac{n}{p} - 1 \right)' title='\displaystyle T(n) = \sum_{p \le n} \left( \frac{n}{p} - 1 \right)' class='latex' /></p>
<p>If we separate the summation into the harmonic series of primes (HSP) and prime counting function (aggregate 1 for every prime less than n) we get:<br />
<img src='http://l.wordpress.com/latex.php?latex=%5Cdisplaystyle+T%28n%29+%3D+n+%5Csum_%7Bp+%5Cle+n%7D+%5Cleft%28+%5Cfrac%7B1%7D%7Bp%7D+%5Cright%29+-+%5Cpi%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\displaystyle T(n) = n \sum_{p \le n} \left( \frac{1}{p} \right) - \pi(n)' title='\displaystyle T(n) = n \sum_{p \le n} \left( \frac{1}{p} \right) - \pi(n)' class='latex' /></p>
<p>Asymptotically, the HSP tends towards <img src='http://l.wordpress.com/latex.php?latex=%5Cln+%5Cln+n&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\ln \ln n' title='\ln \ln n' class='latex' /> and <img src='http://l.wordpress.com/latex.php?latex=%5Cpi%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\pi(n)' title='\pi(n)' class='latex' /> towards <img src='http://l.wordpress.com/latex.php?latex=%5Cfrac%7Bn%7D%7B%5Cln+n%7D&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\frac{n}{\ln n}' title='\frac{n}{\ln n}' class='latex' />.<br />
<img src='http://l.wordpress.com/latex.php?latex=%5Cdisplaystyle+T%28n%29+%3D+n+%5Cleft%28+%5Cln+%5Cln+n+%5Cright%29+-+%5Cpi%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\displaystyle T(n) = n \left( \ln \ln n \right) - \pi(n)' title='\displaystyle T(n) = n \left( \ln \ln n \right) - \pi(n)' class='latex' /><br />
<img src='http://l.wordpress.com/latex.php?latex=%5Cdisplaystyle+T%28n%29+%3D+n+%5Cleft%28+%5Cln+%5Cln+n+%5Cright%29+-+%5Cfrac%7Bn%7D%7B%5Cln+n%7D&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\displaystyle T(n) = n \left( \ln \ln n \right) - \frac{n}{\ln n}' title='\displaystyle T(n) = n \left( \ln \ln n \right) - \frac{n}{\ln n}' class='latex' /><br />
<img src='http://l.wordpress.com/latex.php?latex=%5Cdisplaystyle+T%28n%29+%3D+n+%5Cfrac%7B+%5Cln+n+%5Ccdot+%5Cln+%5Cln%28n%29+-+1%7D%7B%5Cln+n%7D&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\displaystyle T(n) = n \frac{ \ln n \cdot \ln \ln(n) - 1}{\ln n}' title='\displaystyle T(n) = n \frac{ \ln n \cdot \ln \ln(n) - 1}{\ln n}' class='latex' /></p>
<p>Giving us our final asymptotic time complexity of <img src='http://l.wordpress.com/latex.php?latex=O%28n+%5Cln+%5Cln+n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='O(n \ln \ln n)' title='O(n \ln \ln n)' class='latex' />.</p>
<p>The first member method we&#8217;ll implement is a trivial check to see if a given number is prime by checking the table&#8217;s Record&#8217;s JumpTo property for null.</p>
<pre class="brush: csharp;">
public bool IsPrime(uint N){
    return !table[N].JumpTo.HasValue;
}
</pre>
<p>The time complexity here is a simple <img src='http://l.wordpress.com/latex.php?latex=O%281%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='O(1)' title='O(1)' class='latex' />.</p>
<p>From IsPrime, we can easily implement a function that will get every single prime up to a given value by iterating over the table.</p>
<pre class="brush: csharp;">
public void PrimesLessThan(uint value, Action&lt;uint&gt; actOnPrime) {
    for(int n = 2; n &lt; value; n++)
	if(IsPrime(n))
		actOnPrime(n);
}
</pre>
<p>We can get the prime counting function <img src='http://l.wordpress.com/latex.php?latex=%5Cpi%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\pi(n)' title='\pi(n)' class='latex' /> but utilizing the PrimeLessThan function.</p>
<pre class="brush: csharp;">
public uint CountPrimes(uint n) {
	uint count = 0;
	PrimesLessThan(n, (p) =&gt; {count++;});
	return count;
}
</pre>
<p>Here the time complexity is the same as PrimesLessThan: <img src='http://l.wordpress.com/latex.php?latex=O%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='O(n)' title='O(n)' class='latex' />.</p>
<p>We can get the prime factorization of a composite easily. To do so, we simply iterate over the records until we reach a Record with no JumpTo value.</p>
<pre class="brush: csharp;">
public void PrimeFactorsOf(uint composite, Action actOnFactor) {
    Record temp = table[composite];
    while(temp != null) {
        actOnFactor(temp.Prime);
        if(temp.JumpTo.HasValue)
            temp = table[temp.JumpTo.Value];
        else
            temp = null;
    }
}
</pre>
<p>The time complexity of this implementation relies on the the prime omega function <img src='http://l.wordpress.com/latex.php?latex=%5COmega%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\Omega(n)' title='\Omega(n)' class='latex' /> which is the number of prime factors (not necessarily distinct) of n. The function tends to <img src='http://l.wordpress.com/latex.php?latex=O%28+%5Cln+%5Cln+n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='O( \ln \ln n)' title='O( \ln \ln n)' class='latex' />.</p>
<p>From PrimeFactorsOf, we can also easily implement Euler&#8217;s Totient Function <img src='http://l.wordpress.com/latex.php?latex=%5Cphi%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\phi(n)' title='\phi(n)' class='latex' />- the function tells us how many positive integers less than n are coprime to n. It is defined as:<br />
<img src='http://l.wordpress.com/latex.php?latex=%5Cdisplaystyle+%5Cphi%28n%29+%3D+n+%5Cprod_%7Bp%7Cn%7D+%5Cleft%28+1+-+%5Cfrac%7B1%7D%7Bp%7D+%5Cright%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\displaystyle \phi(n) = n \prod_{p|n} \left( 1 - \frac{1}{p} \right)' title='\displaystyle \phi(n) = n \prod_{p|n} \left( 1 - \frac{1}{p} \right)' class='latex' /><br />
Which essentially states that if you multiply all of the repeated prime factors of n together by all of the non-repeat prime factors &#8211; 1 of n together, you will have the result of <img src='http://l.wordpress.com/latex.php?latex=%5Cphi%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\phi(n)' title='\phi(n)' class='latex' />.</p>
<pre class="brush: csharp;">
public uint EulerTotient(uint n){
    uint phi = 1, last = 0;
    PrimeFactorsOf(n, (p) =&gt; {
        if(p != last) {
            phi *= p - 1;
            last = p;
        } else {
            phi *= p;
        }
    });
    return phi;
}
</pre>
<p>A similar function known as the Dedekind <img src='http://l.wordpress.com/latex.php?latex=%5Cpsi%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\psi(n)' title='\psi(n)' class='latex' /> Function defined as<br />
<img src='http://l.wordpress.com/latex.php?latex=%5Cdisplaystyle+%5Cpsi%28n%29+%3D+n+%5Cprod_%7Bp%7Cn%7D+%5Cleft+%28+1+%2B+%5Cfrac%7B1%7D%7Bp%7D+%5Cright+%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\displaystyle \psi(n) = n \prod_{p|n} \left ( 1 + \frac{1}{p} \right )' title='\displaystyle \psi(n) = n \prod_{p|n} \left ( 1 + \frac{1}{p} \right )' class='latex' /><br />
can be implemented in a similar way as <img src='http://l.wordpress.com/latex.php?latex=%5Cphi%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\phi(n)' title='\phi(n)' class='latex' />:</p>
<pre class="brush: csharp;">
public uint DedekindPsi(uint n){
    uint phi = 1, last = 0;
    PrimeFactorsOf(n, (p) =&gt; {
        if(p != last) {
            phi *= p + 1;
            last = p;
        } else {
            phi *= p;
        }
    });
    return phi;
}
</pre>
<p>The Von Mangoldt Function <img src='http://l.wordpress.com/latex.php?latex=%5CLambda%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\Lambda(n)' title='\Lambda(n)' class='latex' /> is another interesting function, unfortunately I haven&#8217;t had a chance to use it, but it is trivial to implement so I will include it here for completeness. It is defined as<br />
<img src='http://l.wordpress.com/latex.php?latex=%5Cdisplaystyle+%5CLambda+%28n%29+%3D+%5Cbegin%7Bcases%7D+%5Cln%7Bp%7D+%26+%5Ctext+%7Bif+n+%3D+prime+to+some+positive+integer+power%7D+%5C%5C+0+%26+%5Ctext%7Botherwise%7D+%5Cend%7Bcases%7D&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\displaystyle \Lambda (n) = \begin{cases} \ln{p} &amp; \text {if n = prime to some positive integer power} \\ 0 &amp; \text{otherwise} \end{cases}' title='\displaystyle \Lambda (n) = \begin{cases} \ln{p} &amp; \text {if n = prime to some positive integer power} \\ 0 &amp; \text{otherwise} \end{cases}' class='latex' /></p>
<pre class="brush: csharp;">
public double VonMangoldt(uint n){
    uint P = 0;
    PrimeFactorsOf(n, (p) =&gt; {
        if(P == 0) {
            P = p;
        } else if (P != p) {
            P = 1;
        }
    });
    return Math.Log(P);
}
</pre>
<p>The M&ouml;bius Function <img src='http://l.wordpress.com/latex.php?latex=%5Cmu%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\mu(n)' title='\mu(n)' class='latex' /> is a handy little function for determining if a number is square free or not (among many more interesting things). It is defined as:<br />
<img src='http://l.wordpress.com/latex.php?latex=+%5Cdisplaystyle+%5Cmu%28n%29+%3D+%5Cbegin%7Bcases%7D+0+%26+%5Ctext%7Bif+n+has+one+or+more+replicated+factors%7D+%5C%5C+1+%26+%5Ctext%7Bif+n+%3D+1%7D+%5C%5C+%28-1%29%5E%7Bk%7D+%26+%5Ctext%7Bif+n+is+a+product+of+k+distinct+primes%7D+%5Cend%7Bcases%7D&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt=' \displaystyle \mu(n) = \begin{cases} 0 &amp; \text{if n has one or more replicated factors} \\ 1 &amp; \text{if n = 1} \\ (-1)^{k} &amp; \text{if n is a product of k distinct primes} \end{cases}' title=' \displaystyle \mu(n) = \begin{cases} 0 &amp; \text{if n has one or more replicated factors} \\ 1 &amp; \text{if n = 1} \\ (-1)^{k} &amp; \text{if n is a product of k distinct primes} \end{cases}' class='latex' /></p>
<pre class="brush: csharp;">
public int MoebiusFunction(uint N){
    if(N == 1)
        return 1;
    bool distinct = true;
    uint last = 0, k = 0;
    PrimeFactorsOf(N, (p) =&gt; {
        if(p == last) {
            distinct = false;
        } else {
            k++;
            last = p;
        }
    });

    if(distinct)
        return ((k &amp; 1) == 0) ? 1 : -1;
    return 0;
}
</pre>
<p>Since EulerTotient, DedekindPsi, VonMangoldt and Moebius each use PrimeFactorsOf without any additional lifting, their time complexities are the same as PrimeFactorsOf &#8211; <img src='http://l.wordpress.com/latex.php?latex=O%28%5Cln+%5Cln+n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='O(\ln \ln n)' title='O(\ln \ln n)' class='latex' />.</p>
<p>The last function I&#8217;ll implement is the Mertens Function <img src='http://l.wordpress.com/latex.php?latex=M%28n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='M(n)' title='M(n)' class='latex' /> which is simply defined as <img src='http://l.wordpress.com/latex.php?latex=%5Cdisplaystyle+M%28n%29+%3D+%5Csum_%7Bk+%3D+1%7D%5E%7Bn%7D+%5Cmu%28k%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='\displaystyle M(n) = \sum_{k = 1}^{n} \mu(k)' title='\displaystyle M(n) = \sum_{k = 1}^{n} \mu(k)' class='latex' />:</p>
<pre class="brush: csharp;">
public int Mertens(uint n){
    int m = 0;
    for(uint k = 1; k &lt;= n; k++)
        m += MoebiusFunction(k);
    return m;
}
</pre>
<p>The implementation&#8217;s time complexity is simply <img src='http://l.wordpress.com/latex.php?latex=O%28n+%5Cln+%5Cln+n%29&#038;bg=fff&#038;fg=1c1c1c&#038;s=0' alt='O(n \ln \ln n)' title='O(n \ln \ln n)' class='latex' />.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/antimatroid.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/antimatroid.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/antimatroid.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/antimatroid.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/antimatroid.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/antimatroid.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/antimatroid.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/antimatroid.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/antimatroid.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/antimatroid.wordpress.com/615/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=antimatroid.wordpress.com&blog=4448583&post=615&subd=antimatroid&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://antimatroid.wordpress.com/2009/04/01/integer-factorization-by-dynamic-programming-with-number-theoretic-applications/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/62c32c6293d483fc7e1d545c4b9a0ac3?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">lewellen</media:title>
		</media:content>

		<media:content url="http://antimatroid.files.wordpress.com/2009/05/factor_table_polar.png" medium="image">
			<media:title type="html">factor_table_polar</media:title>
		</media:content>
	</item>
	</channel>
</rss>