<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
	>
<channel>
	<title>Comments on: Prime Numbers In Python</title>
	<atom:link href="http://pthree.org/2007/09/05/prime-numbers-in-python/feed/" rel="self" type="application/rss+xml" />
	<link>http://pthree.org/2007/09/05/prime-numbers-in-python/</link>
	<description>Linux.  GNU.  Freedom.</description>
	<pubDate>Thu, 04 Dec 2008 00:38:32 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7-RC1-10015</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: lizz</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-103465</link>
		<dc:creator>lizz</dc:creator>
		<pubDate>Mon, 23 Jun 2008 12:29:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-103465</guid>
		<description>your story is sux, try to test, for example, 99999999977 or 4740914805200312594461
try to read about miller-tabin algorythm

P.S. sorry for my english ;)</description>
		<content:encoded><![CDATA[<p>your story is sux, try to test, for example, 99999999977 or 4740914805200312594461<br />
try to read about miller-tabin algorythm</p>
<p>P.S. sorry for my english <img src='http://pthree.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Johnathan Nguyen</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-86947</link>
		<dc:creator>Johnathan Nguyen</dc:creator>
		<pubDate>Fri, 28 Dec 2007 00:10:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-86947</guid>
		<description>Review this publication: Prime Sequence Homology by Daniel Blake et al; Fourrier University, Grenoble

Dr. Blake's approach is via a randomization channel.  Code is also presented. I tried to cut and paste but was unsuccessful.</description>
		<content:encoded><![CDATA[<p>Review this publication: Prime Sequence Homology by Daniel Blake et al; Fourrier University, Grenoble</p>
<p>Dr. Blake&#8217;s approach is via a randomization channel.  Code is also presented. I tried to cut and paste but was unsuccessful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Francesc Dorca</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68151</link>
		<dc:creator>Francesc Dorca</dc:creator>
		<pubDate>Thu, 06 Sep 2007 21:39:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68151</guid>
		<description>Hi Aaron,

First of all congratulations for your interesting blog.

Let me suggest an improvement to make your code much more efficient.

I do not know Python, but using my knowledge on other programming languages I think that I can understand your code pretty well. 

You can use only integer arithmetic doing two minor changes.

Eliminate the sentence

&lt;code&gt;import math&lt;/code&gt;

and replace the line

&lt;code&gt;while i &#60;= math.sqrt(n):&lt;/code&gt;

by the equivalent sentence

&lt;code&gt;while i*i &#60;= n:&lt;/code&gt;

that uses only integer arithmetics.</description>
		<content:encoded><![CDATA[<p>Hi Aaron,</p>
<p>First of all congratulations for your interesting blog.</p>
<p>Let me suggest an improvement to make your code much more efficient.</p>
<p>I do not know Python, but using my knowledge on other programming languages I think that I can understand your code pretty well. </p>
<p>You can use only integer arithmetic doing two minor changes.</p>
<p>Eliminate the sentence</p>
<p><pre class="php">import math</pre></p>
<p>and replace the line</p>
<p><pre class="php"><span style="color: #b1b100;">while</span> i &amp;lt;= math.<a href="http://www.php.net/sqrt"><span style="color: #000066;">sqrt</span></a><span style="color: #66cc66;">&#40;</span>n<span style="color: #66cc66;">&#41;</span>:</pre></p>
<p>by the equivalent sentence</p>
<p><pre class="php"><span style="color: #b1b100;">while</span> i*i &amp;lt;= n:</pre></p>
<p>that uses only integer arithmetics.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68143</link>
		<dc:creator>Aaron</dc:creator>
		<pubDate>Thu, 06 Sep 2007 19:41:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68143</guid>
		<description>@Levi-  Fair enough.  My inexperience really shows through on things like this.  I need to spend more time on math-related algorithms analyzing their complexity and what's going on under the hood I think.

Again, thanks for the info.</description>
		<content:encoded><![CDATA[<p>@Levi-  Fair enough.  My inexperience really shows through on things like this.  I need to spend more time on math-related algorithms analyzing their complexity and what&#8217;s going on under the hood I think.</p>
<p>Again, thanks for the info.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Levi</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68139</link>
		<dc:creator>Levi</dc:creator>
		<pubDate>Thu, 06 Sep 2007 18:59:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68139</guid>
		<description>A couple of comments regarding the complexity of this algorithm.

First, you don't include lower-order factors in big-O notation.  An algorithm that takes n-1 steps is still O(n).  An algorithm that takes n^2+5n+2 steps is O(n^2), or simply Polynomial Time when speaking in terms of complexity classes.

Second, you're ignoring the fact that, for large numbers, modulo is not a constant time operation.  The O(sqrt(n)) complexity is only correct if n is the size of your number and it fits in the hardware.  This isn't true in general, so it's not very useful for the sorts of  reasoning big-O notation was invented for.

To be general, you need to define the algorithm in terms of the number of bits in your input number.  For an integer N, it takes log N + 1 bits to store it. That means that the complexity in terms of the input size is O(2^(n/2)).  This is exponential, i.e. very bad.  A 1024 bit integer gives you a running time of essentially 2^512, which is definitely intractable.

As other people have stated, there are much better algorithms for primality testing, and the one you're using is worthless for crypto applications.

My reference for this comment: &lt;a href="http://books.google.com/books?id=3Q0V-t5kJ5sC&#38;pg=RA1-PA14&#38;lpg=RA1-PA14&#38;dq=computational+complexity+%22naive+primality%22&#38;source=web&#38;ots=PPzLiuYi2K&#38;sig=X6ikfwZRoaNWfo9KCs7nH8K-36s#PRA1-PA14,M1" rel="nofollow"&gt;Complexity and Cryptography: An Introduction&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>A couple of comments regarding the complexity of this algorithm.</p>
<p>First, you don&#8217;t include lower-order factors in big-O notation.  An algorithm that takes n-1 steps is still O(n).  An algorithm that takes n^2+5n+2 steps is O(n^2), or simply Polynomial Time when speaking in terms of complexity classes.</p>
<p>Second, you&#8217;re ignoring the fact that, for large numbers, modulo is not a constant time operation.  The O(sqrt(n)) complexity is only correct if n is the size of your number and it fits in the hardware.  This isn&#8217;t true in general, so it&#8217;s not very useful for the sorts of  reasoning big-O notation was invented for.</p>
<p>To be general, you need to define the algorithm in terms of the number of bits in your input number.  For an integer N, it takes log N + 1 bits to store it. That means that the complexity in terms of the input size is O(2^(n/2)).  This is exponential, i.e. very bad.  A 1024 bit integer gives you a running time of essentially 2^512, which is definitely intractable.</p>
<p>As other people have stated, there are much better algorithms for primality testing, and the one you&#8217;re using is worthless for crypto applications.</p>
<p>My reference for this comment: <a href="http://books.google.com/books?id=3Q0V-t5kJ5sC&amp;pg=RA1-PA14&amp;lpg=RA1-PA14&amp;dq=computational+complexity+%22naive+primality%22&amp;source=web&amp;ots=PPzLiuYi2K&amp;sig=X6ikfwZRoaNWfo9KCs7nH8K-36s#PRA1-PA14,M1" rel="nofollow">Complexity and Cryptography: An Introduction</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cornelius DuLac</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68107</link>
		<dc:creator>Cornelius DuLac</dc:creator>
		<pubDate>Thu, 06 Sep 2007 13:03:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68107</guid>
		<description>I don't think you are using the O notation correctly.  Using binary search to search through a list of n ordered numbers takes O(sqrt(n)).  Here, n is not the number of inputs, it's the input itself.  

Now, if you were saying n was the size of the input number, I think you'll find that your notation is still flawed.  This is not a poly time algorithm.  If it were, you would be able to break several encryption algorithms that rely on the hardness of the primality problem, as well (I believe) P=NP.

It's been a while since I've done algorithmics in school, but I think you'll find I am right.

C.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t think you are using the O notation correctly.  Using binary search to search through a list of n ordered numbers takes O(sqrt(n)).  Here, n is not the number of inputs, it&#8217;s the input itself.  </p>
<p>Now, if you were saying n was the size of the input number, I think you&#8217;ll find that your notation is still flawed.  This is not a poly time algorithm.  If it were, you would be able to break several encryption algorithms that rely on the hardness of the primality problem, as well (I believe) P=NP.</p>
<p>It&#8217;s been a while since I&#8217;ve done algorithmics in school, but I think you&#8217;ll find I am right.</p>
<p>C.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Karl Lattimer</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68074</link>
		<dc:creator>Karl Lattimer</dc:creator>
		<pubDate>Thu, 06 Sep 2007 09:17:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68074</guid>
		<description>Careful of sweeping statements like "As far as I can tell, this is the most efficient way (not necessarily the fastest) to test if a number is prime or not."

When its hardly efficient, or elegant, and efficiency in software implies speed. 

If I were to ask you whether or not 578438089702734102192371840427834912121157 were prime or not how long would it take to identify that? PGP has been implementing prime testing and deriving primes in far more efficient ways for a long time, and can determine whether or not a 4096bit number is prime in a few seconds. 

Exploit sieves and "don't care" cases faster.</description>
		<content:encoded><![CDATA[<p>Careful of sweeping statements like &#8220;As far as I can tell, this is the most efficient way (not necessarily the fastest) to test if a number is prime or not.&#8221;</p>
<p>When its hardly efficient, or elegant, and efficiency in software implies speed. </p>
<p>If I were to ask you whether or not 578438089702734102192371840427834912121157 were prime or not how long would it take to identify that? PGP has been implementing prime testing and deriving primes in far more efficient ways for a long time, and can determine whether or not a 4096bit number is prime in a few seconds. </p>
<p>Exploit sieves and &#8220;don&#8217;t care&#8221; cases faster.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Walther</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68050</link>
		<dc:creator>Walther</dc:creator>
		<pubDate>Thu, 06 Sep 2007 05:59:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68050</guid>
		<description>Hehe, as usual I got carried away and programmed multiple versions myself in Python (including a sieve algorithm and a caching version of your algorithm).
For the critics here: the simple algorithm (with the sqrt) is pretty fast at least up until (2^31)-1. 
If you want to be fast for big primes, you would probably pick a different language anyway.</description>
		<content:encoded><![CDATA[<p>Hehe, as usual I got carried away and programmed multiple versions myself in Python (including a sieve algorithm and a caching version of your algorithm).<br />
For the critics here: the simple algorithm (with the sqrt) is pretty fast at least up until (2^31)-1.<br />
If you want to be fast for big primes, you would probably pick a different language anyway.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anon</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68047</link>
		<dc:creator>anon</dc:creator>
		<pubDate>Thu, 06 Sep 2007 05:06:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68047</guid>
		<description>In 2004, Agrawal, Kayal, and Saxena published this paper:
www.math.princeton.edu/~annals/issues/2004/Sept2004/Agrawal.pdf
in which they present a polynomial time algorithm to determine if a number is prime or composite.

Note that it is a polynomial time algorithm in the size of the input.

I hope you find that article interesting. In addition to proving a deep result, the references section will point you to just about everything you could care to know about primes.</description>
		<content:encoded><![CDATA[<p>In 2004, Agrawal, Kayal, and Saxena published this paper:<br />
<a href="http://www.math.princeton.edu/~annals/issues/2004/Sept2004/Agrawal.pdf" rel="nofollow">http://www.math.princeton.edu/~annals/issues/2004/Sept2004/Agrawal.pdf</a><br />
in which they present a polynomial time algorithm to determine if a number is prime or composite.</p>
<p>Note that it is a polynomial time algorithm in the size of the input.</p>
<p>I hope you find that article interesting. In addition to proving a deep result, the references section will point you to just about everything you could care to know about primes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anon</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68046</link>
		<dc:creator>anon</dc:creator>
		<pubDate>Thu, 06 Sep 2007 05:01:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68046</guid>
		<description>You may find this interesting:

www.math.princeton.edu/~annals/issues/2004/Sept2004/Agrawal.pdf</description>
		<content:encoded><![CDATA[<p>You may find this interesting:</p>
<p><a href="http://www.math.princeton.edu/~annals/issues/2004/Sept2004/Agrawal.pdf" rel="nofollow">http://www.math.princeton.edu/~annals/issues/2004/Sept2004/Agrawal.pdf</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jon</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68038</link>
		<dc:creator>Jon</dc:creator>
		<pubDate>Thu, 06 Sep 2007 03:57:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68038</guid>
		<description>C++ version, anyone?

&lt;code&gt;bool isPrime(long p)
{
  long maxfactor = static_cast(sqrt(p) + 1);		// round up
  for (long n = 2; n &#60; maxfactor; ++n)
    if (p % n == 0)
      return false;
  return true;
}&lt;/code&gt;

Just for reference, to test each number in [1, 10^6], the C/C++ version is a bit more than an order of magnitude faster than the sqrt-optimized version of the above python; python (2.10 sec versus 39.5 sec).

Programming posts are always nice to see in my reader; keep up the learning!

(Side note: I can't put a less-than sign in my comment.  It appears that the post page thinks its a tag start, so I tried &#60; but that shows literally, as seen above.)</description>
		<content:encoded><![CDATA[<p>C++ version, anyone?</p>
<p><pre class="php">bool isPrime<span style="color: #66cc66;">&#40;</span>long p<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
  long maxfactor = static_cast<span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/sqrt"><span style="color: #000066;">sqrt</span></a><span style="color: #66cc66;">&#40;</span>p<span style="color: #66cc66;">&#41;</span> + <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;		<span style="color: #808080; font-style: italic;">// round up</span>
  <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span>long n = <span style="color: #cc66cc;">2</span>; n &amp;lt; maxfactor; ++n<span style="color: #66cc66;">&#41;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>p % n == <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span>;
  <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">true</span>;
<span style="color: #66cc66;">&#125;</span></pre></p>
<p>Just for reference, to test each number in [1, 10^6], the C/C++ version is a bit more than an order of magnitude faster than the sqrt-optimized version of the above python; python (2.10 sec versus 39.5 sec).</p>
<p>Programming posts are always nice to see in my reader; keep up the learning!</p>
<p>(Side note: I can&#8217;t put a less-than sign in my comment.  It appears that the post page thinks its a tag start, so I tried &lt; but that shows literally, as seen above.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charles McCreary</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68034</link>
		<dc:creator>Charles McCreary</dc:creator>
		<pubDate>Thu, 06 Sep 2007 03:26:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68034</guid>
		<description>Your post got me thinking about python and optimizations. So I googled about and found a few algorithms that are pretty fast at determining primeness. I posted them here:  http://www.tiawichiresearch.com/?m=200709</description>
		<content:encoded><![CDATA[<p>Your post got me thinking about python and optimizations. So I googled about and found a few algorithms that are pretty fast at determining primeness. I posted them here:  <a href="http://www.tiawichiresearch.com/?m=200709" rel="nofollow">http://www.tiawichiresearch.com/?m=200709</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xyhthyx</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68022</link>
		<dc:creator>Xyhthyx</dc:creator>
		<pubDate>Thu, 06 Sep 2007 02:20:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68022</guid>
		<description>Perl version anyone?

&lt;code&gt;sub is_prime {
    my ($n) = @_;
    $n = abs($n);
    my i = 2;
    while ($i </description>
		<content:encoded><![CDATA[<p>Perl version anyone?</p>
<p><code>sub is_prime {<br />
    my ($n) = @_;<br />
    $n = abs($n);<br />
    my i = 2;<br />
    while ($i</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68010</link>
		<dc:creator>Aaron</dc:creator>
		<pubDate>Thu, 06 Sep 2007 00:16:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68010</guid>
		<description>@rbu- Ahh, good call.  Makes perfect sense.

@Swistak- As I mentioned in the post, there are probably faster algorithms.

@Rocco Stanzione- No problem.  Keep posting. :)  Thanks for the code, by the way.

@Pansen &#038; randomwalker- Thanks for the informative comments.  Very well thought through.</description>
		<content:encoded><![CDATA[<p>@rbu- Ahh, good call.  Makes perfect sense.</p>
<p>@Swistak- As I mentioned in the post, there are probably faster algorithms.</p>
<p>@Rocco Stanzione- No problem.  Keep posting. <img src='http://pthree.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Thanks for the code, by the way.</p>
<p>@Pansen &#038; randomwalker- Thanks for the informative comments.  Very well thought through.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rocco Stanzione</title>
		<link>http://pthree.org/2007/09/05/prime-numbers-in-python/#comment-68008</link>
		<dc:creator>Rocco Stanzione</dc:creator>
		<pubDate>Wed, 05 Sep 2007 23:53:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.pthree.org/2007/09/05/prime-numbers-in-python/#comment-68008</guid>
		<description>Last post I promise!  Sure there are plenty of faster algorithms.  But this is reasonably fast, reasonably efficient and accomplished with reasonably little code.  It's also very useful for both testing primeness and enumerating primes.  Anyway I made it faster still and more accurate (1 is not a prime number).  This enumerated all the primes from 1 to 1M in 34 seconds for me:

&lt;code&gt;
class Integer
  def is_prime?
    i=3
    return false if self % 2 == 0 and self != 2
    ss = sqrt(self).floor
    return false if ss**2 == self
    while i &#60;= ss
      return false if self % i == 0
      i += 2
    end
    return true
  end
end
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Last post I promise!  Sure there are plenty of faster algorithms.  But this is reasonably fast, reasonably efficient and accomplished with reasonably little code.  It&#8217;s also very useful for both testing primeness and enumerating primes.  Anyway I made it faster still and more accurate (1 is not a prime number).  This enumerated all the primes from 1 to 1M in 34 seconds for me:</p>
<p><pre class="php"><span style="color: #000000; font-weight: bold;">class</span> Integer
  def is_prime?
    i=<span style="color: #cc66cc;">3</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span> <span style="color: #b1b100;">if</span> self % <span style="color: #cc66cc;">2</span> == <span style="color: #cc66cc;">0</span> and self != <span style="color: #cc66cc;">2</span>
    ss = <a href="http://www.php.net/sqrt"><span style="color: #000066;">sqrt</span></a><span style="color: #66cc66;">&#40;</span>self<span style="color: #66cc66;">&#41;</span>.<a href="http://www.php.net/floor"><span style="color: #000066;">floor</span></a>
    <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span> <span style="color: #b1b100;">if</span> ss**<span style="color: #cc66cc;">2</span> == self
    <span style="color: #b1b100;">while</span> i &amp;lt;= ss
      <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span> <span style="color: #b1b100;">if</span> self % i == <span style="color: #cc66cc;">0</span>
      i += <span style="color: #cc66cc;">2</span>
    <a href="http://www.php.net/end"><span style="color: #000066;">end</span></a>
<span style="color: #ff0000">    <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">true</span>
  end</span>
<a href="http://www.php.net/end"><span style="color: #000066;">end</span></a></pre></p>
]]></content:encoded>
	</item>
</channel>
</rss>
