`

C语言代码筛选求素数和普通求法

 
阅读更多

<div id="Article"> 

 <p>素数:除了自身之外,无法被其它整数整除的数称之为素数</p> 

 <h3 id="c代码普通">C代码(普通)</h3> 

 <pre class="brush:java;">

#include

  <stdio.h>

   

#include

   <stdlib.h>

     #include

    <math.h>

      #define N 100 //普通方法 int main() { int i, j; for (i = 2; i &lt; N; i++) { for (j = 2; j &lt;= sqrt(i); j++) { if (i%j == 0) { break; } } if (j &gt; sqrt(i)) { printf(&quot;%d\n&quot;, i); } } //return 0; system(&quot;pause&quot;); }

    </math.h>

   </stdlib.h>

  </stdio.h></pre> 

 <p>筛选法</p> 

 <pre class="brush:java;">

#include

  <stdio.h>

   

#include

   <stdlib.h>

     #include

    <math.h>

      #define N 100 //筛选求质数 //具体筛法是:先把n个自然数按次序排列起来。 //1不是质数,也不是合数,要划去。 //第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。 //2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。 //3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。 //这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。 int main() { int num=0; int flag[N+1]; int i, j; for (i = 2; i &lt;= N; i++) { flag[i] = 1;//初始化,表明此时没有数划去 } for (i = 2; i*i &lt;= N; i++) { if (flag[i] == 1) { for (j = 2; i*j &lt;= N; j++) { flag[i*j] = 0; //把i的倍数划去 } } } for (i = 0; i &lt;= N; i++) { if (flag[i] == 1) { printf(&quot;%4d&quot;, i); num++; if (num % 10 == 0) { printf(&quot;\n&quot;); } } } printf(&quot;\n&quot;); system(&quot;pause&quot;); }

    </math.h>

   </stdlib.h>

  </stdio.h></pre> 

</div>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics