鍍金池/ 教程/ C/ 一起talk C栗子吧(第八回:C語言實(shí)例--素?cái)?shù))
一起talk C栗子吧(第八回:C語言實(shí)例--素?cái)?shù))
一起talk C栗子吧(第十八回:C語言實(shí)例--輸出十六進(jìn)制)
一起talk C栗子吧(第十七回:C語言實(shí)例--棧二)
一起talk C栗子吧(第十九回:C語言實(shí)例--位操作)
一起talk C栗子吧(第十六回:C語言實(shí)例--棧一)
一起talk C栗子吧(第五回:C語言實(shí)例--數(shù)組巧妙賦值)
一起talk C栗子吧(第十二回:C語言實(shí)例--單鏈表一)
一起talk C栗子吧(第九回:C語言實(shí)例--最大公約數(shù))
一起talk C栗子吧(第二回:C語言實(shí)例--判斷閏年)
一起talk C栗子吧(第六回:C語言實(shí)例--生成隨機(jī)數(shù))
一起talk C栗子吧(第四回:C語言實(shí)例--斐波那契數(shù)列)
一起talk C栗子吧(第十四回:C語言實(shí)例--循環(huán)鏈表)
一起talk C栗子吧(第十五回:C語言實(shí)例--雙向鏈表)
一起talk C栗子吧(第二十一回:C語言實(shí)例--表達(dá)式求值)
一起talk C栗子吧(第三回:C語言實(shí)例--求階乘)
一起talk C栗子吧(第七回:C語言實(shí)例--進(jìn)制轉(zhuǎn)換)
一起talk C栗子吧(第二十回:C語言實(shí)例--括號匹配)
一起talk C栗子吧(第一回:C語言實(shí)例概述)
一起talk C栗子吧(第十回:C語言實(shí)例--最小公倍數(shù))
一起talk C栗子吧(第十一回:C語言實(shí)例--文件組織結(jié)構(gòu))
一起talk C栗子吧(第十三回:C語言實(shí)例--單鏈表二)

一起talk C栗子吧(第八回:C語言實(shí)例--素?cái)?shù))

各位看官們,大家好,從今天開始,我們講大型章回體科技小說 :C栗子,也就是C語言實(shí)例。閑話休提, 言歸正轉(zhuǎn)。讓我們一起talk C栗子吧!

看官們,上一回中咱們說的是進(jìn)制轉(zhuǎn)換的例子,這一回咱們說的例子是:素?cái)?shù)。

素?cái)?shù)又叫質(zhì)數(shù),在大于1的自然數(shù)中,如果一個正整數(shù)除了1和它本身外,不能被其它自然數(shù)整除,那么這 個數(shù)就是一個素?cái)?shù)。素?cái)?shù)比較多,所以咱們例子中只展示從1到100這個范圍內(nèi)的素?cái)?shù)。

看官們覺得這個例子算是簡單,我也覺得比較簡單。只要把范圍內(nèi)的數(shù)從頭到尾遍歷一下,判斷是否能被 除1和自身以外的其它的數(shù)整除就可以。我專門說素?cái)?shù)這個例子是為想介紹另外一種方法,該方法可以節(jié)省 遍歷的時間,提高程序運(yùn)行效率。我在例子中使用的原理:假如有一個正整數(shù)n,除了1和它本身外,用從2 到正整數(shù)n的平方根之間所有的正整數(shù)數(shù)去除 n,如果n都不能被整除。那么正整數(shù)n就是素?cái)?shù)。使用該方法 可以減少遍歷的數(shù)目,進(jìn)而提高程序的效率。

看官們,詳細(xì)的代碼如下,大家可以參考:

     1  /* **************************
     2   * For Prime Number
     3   * *************************/
     4  #include<stdio.h>
     5  
     6  #define N 100
     7  
     8  int main()
     9  {
    10      int index,step;
    11      int i = 0;
    12      int res[N]= {0};
    13  
    14      index = step = 0;
    15  
    16      printf("show the PrimeNumber of [1--%d]i\n",N);
    17  
    18      for(index=2; index <=N; ++index)
    19      {
    20          for(step=2; step*step <= N; ++step)
    21          {
    22              if( index != step && index % step == 0 ) //如果不第一個判斷條件,那么會有遺漏
    23                  break;
    24          }
    25  
    26          if(step*step > N)
    27          {
    28              res[i] = index;
    29              ++i;
    30          }
    31      }
    32  
    33      while(i-- >0)
    34          printf("%d \n",res[i]);
    35  
    36      return 0;
    37  }

各位看官,關(guān)于素?cái)?shù)的例子咱們就說到這里。欲知后面還有什么例子,且聽下回分解。