<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://www.gentoo-zh.org/extern.php?action=feed&amp;tid=342&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Gentoo中文社区 / C 练习实例33 - 质数（素数）判断]]></title>
		<link>https://www.gentoo-zh.org/viewtopic.php?id=342</link>
		<description><![CDATA[C 练习实例33 - 质数（素数）判断 最近发表的帖子。]]></description>
		<lastBuildDate>Mon, 29 Aug 2022 07:14:47 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[C 练习实例33 - 质数（素数）判断]]></title>
			<link>https://www.gentoo-zh.org/viewtopic.php?pid=348#p348</link>
			<description><![CDATA[<p>题目：判断一个数字是否为质数。</p><p>程序分析：质数（prime number）又称素数，有无限个。一个大于1的自然数，除了1和它本身外，不能被其他自然数整除。</p><p>程序源代码：</p><div class="codebox"><pre class="vscroll"><code>#include&lt;stdio.h&gt;
#include&lt;math.h&gt;
#define MAX 1000
 
 
int prime[MAX];
 
int isPrimeNaive(int n)
{
    if(n &lt;= 1)
        return 0;
    for(int i = 2; i &lt; n; i++)
        if(n % i == 0)
            return 0;
    return 1;
}
 
int isPrime(int n)
{
    if(n&lt;= 1)
        return 0;
    if(n == 2)
        return 1;
    if(n%2 == 0)
        return 0;
    int limit = (int)sqrt((double)n);
    for(int i = 3; i &lt;= limit; i=i+2)
    {
        if(n % i == 0)
            return 0;
    }
    return 1;
}
 
void sieve()
{
    prime[0] = 0;
    prime[1] = 0;
    for(int i = 2; i &lt; MAX; i++)
        prime[i] = 1;
    int limit = (int)sqrt((double)MAX);
    for(int i = 2; i &lt;= limit; i++)
    {
        if(prime[i])
            for(int j = i*i; j &lt;= MAX; j+=i)
                prime[j] = 0;
    }
}
 
int isPrimeSieve(int n)
{
    if(prime[n])
        return 1;
    else
        return 0;
}
 
int main()
{
    sieve();
    printf(&quot;N=%d %d\n&quot;, 1, isPrime(1));
    printf(&quot;N=%d %d\n&quot;, 2, isPrime(2));
    printf(&quot;N=%d %d\n&quot;, 3, isPrime(3));
    printf(&quot;N=%d %d\n&quot;, 4, isPrime(4));
    printf(&quot;N=%d %d\n&quot;, 7, isPrime(7));
    printf(&quot;N=%d %d\n&quot;, 9, isPrime(9));
    printf(&quot;N=%d %d\n&quot;, 13, isPrime(13));
    printf(&quot;N=%d %d\n&quot;, 17, isPrime(17));
    printf(&quot;N=%d %d\n&quot;, 100, isPrime(100));
    printf(&quot;N=%d %d\n&quot;, 23, isPrime(23));
    printf(&quot;N=%d %d\n&quot;, 1, isPrime(1));
    return 0;
}</code></pre></div>]]></description>
			<author><![CDATA[dummy@example.com (batsom)]]></author>
			<pubDate>Mon, 29 Aug 2022 07:14:47 +0000</pubDate>
			<guid>https://www.gentoo-zh.org/viewtopic.php?pid=348#p348</guid>
		</item>
	</channel>
</rss>
