• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    C語言中找特殊數(shù)的編程方法探索

    2015-12-21 10:49:44屠新兵
    電腦知識(shí)與技術(shù) 2015年27期
    關(guān)鍵詞:回文水仙花質(zhì)數(shù)

    屠新兵

    摘要:在計(jì)算機(jī)編程語言的學(xué)習(xí)過程中,我們會(huì)遇到一些特殊數(shù)的編程處理方法,包括質(zhì)數(shù)、完全數(shù)、水仙花數(shù)、同構(gòu)數(shù)、回文數(shù)等等。該文主要以C語言編程為例,對(duì)這些特殊數(shù)的編程方法進(jìn)行探索,讓大家對(duì)循環(huán)語句和分支語句有進(jìn)一步的了解。

    關(guān)鍵詞:C語言;特殊數(shù)

    中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)28-0081-02

    在計(jì)算機(jī)編程語言的學(xué)習(xí)過程中,我們會(huì)遇到一些特殊數(shù)的編程處理方法,包括質(zhì)數(shù)、完全數(shù)、水仙花數(shù)、同構(gòu)數(shù)、回文數(shù)等等。當(dāng)我們剛聽到這些名詞的時(shí)候,既感到陌生,又覺得好奇,有一種立即解決問題的沖動(dòng)。當(dāng)我們對(duì)這些特殊數(shù)進(jìn)行分析時(shí)會(huì)發(fā)現(xiàn),它們中很多都可以用一種最原始的方法——窮舉法來解決,有些則不一定。而窮舉法是最常用的一種方法,是C語言中的一個(gè)重要知識(shí)點(diǎn),在近幾年江蘇省的職校計(jì)算機(jī)對(duì)口單招考試中也是一個(gè)重要考點(diǎn)。如果掌握了其要領(lǐng),實(shí)現(xiàn)起來就會(huì)得心應(yīng)手,本文主要以C語言編程為例,對(duì)這些特殊數(shù)的編程方法進(jìn)行探索,希望給參加江蘇省的職校計(jì)算機(jī)對(duì)口單招考試的學(xué)生及編程愛好者帶來一定的幫助。

    對(duì)于這些特殊數(shù)的處理,很多都可以用窮舉法來解決。我們先來了解一下,什么是窮舉法。窮舉法的基本思想是根據(jù)題目的部分條件確定答案的大致范圍,并在此范圍內(nèi)對(duì)所有可能的情況逐一驗(yàn)證,直到全部情況驗(yàn)證完畢。若某個(gè)情況驗(yàn)證符合題目的全部條件,則為本問題的一個(gè)解;若全部情況驗(yàn)證后都不符合題目的全部條件,則本題無解。下面通過幾個(gè)實(shí)例,來對(duì)特殊數(shù)編程處理方法進(jìn)行探索。

    1質(zhì)數(shù)

    質(zhì)數(shù)的定義:除了1和本身外,不能被其他任何自然數(shù)整除的自然數(shù)叫做質(zhì)數(shù),又叫做素?cái)?shù)。

    例:編一函數(shù)int fun(int x),判斷x是否為質(zhì)數(shù)。

    分析:要處理好該問題,就要從定義入手,定義強(qiáng)調(diào)質(zhì)數(shù)只能被1和本身整除,不能被其他任何自然數(shù)整除,我們就要圍繞這個(gè)來進(jìn)行驗(yàn)證,也就是說:除了1和本身以外,如果能找到其他能整除的自然數(shù),就不是質(zhì)數(shù)。本題就是典型的窮舉法的例子。函數(shù)如下:

    int fun(int x)

    { int i;

    for(i=2;i

    if(x%i==0) return 0; /* 能被其他自然數(shù)整除就不是質(zhì)數(shù) */

    return 1;

    }

    拓展:僅判斷一個(gè)數(shù)是否為質(zhì)數(shù),是比較簡單的,實(shí)際應(yīng)用中往往要找出多個(gè)質(zhì)數(shù),這就需要在循環(huán)的外面再嵌套一個(gè)循環(huán),用于控制查找的范圍,再將質(zhì)數(shù)作相應(yīng)的處理即可。驗(yàn)證哥德巴赫猜想則是兩次判斷質(zhì)數(shù)的例子。

    2 完全數(shù)

    完全數(shù)的定義:如果一個(gè)數(shù)恰好等于它的所有的真因子(即除了自身以外的約數(shù))之和,則稱該數(shù)為完全數(shù),又稱完美數(shù)或完備數(shù)。(如:6=1+2+3,28=1+2+4+7+14,6和28都是完全數(shù))

    例:編一函數(shù)fun(int x),判斷x是否為完全數(shù)。

    分析:本題的關(guān)鍵就是將x以內(nèi)的所有數(shù)過濾一下,從中找出真因子進(jìn)行累加,最后看累加的和與原數(shù)是否相等。本題也是典型的窮舉法的例子。函數(shù)如下:

    int fun(int x)

    { int i,s=1;

    for(i=2;i<=x/2;i++)

    if(x%i==0) s+=i; /* 能整除的累加 */

    return s==x;

    }

    拓展:如果需要找出多個(gè)完全數(shù),就要確定查找的范圍,在循環(huán)外再嵌套一個(gè)循環(huán)。

    3水仙花數(shù)

    水仙花數(shù)的定義:水仙花數(shù)是指一個(gè) n 位數(shù) ( n≥3 ),它的每個(gè)位上的數(shù)字的 n(以3為例) 次冪之和等于它本身,又稱阿姆斯特朗數(shù)。(例如: 153=1^3 + 5^3+ 3^3,153就是一個(gè)水仙花數(shù))。

    例:編一函數(shù)int fun(int x),判斷x是否為水仙花數(shù)(3次冪)。

    分析:本題的關(guān)鍵就是要找出x的每一位數(shù)y,如果x僅僅是三位數(shù),可以分別求出百位數(shù)、十位數(shù)和個(gè)位數(shù),用b=x/100;s=x/10%10;g=x%10;可以解決,如果不知道x的位數(shù),可以循環(huán)求出它的最低位,再求出最低位的立方和來實(shí)現(xiàn)。函數(shù)如下:

    int fun(int x)

    { int i,n=x,a,s=0;

    while(x)

    {a=x%10; /* 取出最低位 */

    s+=a*a*a; /* 求出最低位立方和 */

    x/=10; /* x去掉最低位 */

    }

    return s==n; /* 原數(shù)n與各位數(shù)字立方和s相等就是水仙花數(shù) */

    }

    拓展:同樣若要找出若干個(gè)水仙花數(shù),就是在循環(huán)外再嵌套一個(gè)循環(huán),用于控制查找的范圍,再把水仙數(shù)作相應(yīng)處理,而查找并判斷的過程則是窮舉法。

    4同構(gòu)數(shù)

    同構(gòu)數(shù)的定義:同構(gòu)數(shù)是出現(xiàn)在它的平方的右邊的數(shù)。(例如,6出現(xiàn)在其平方數(shù)36的右邊,76出現(xiàn)在其平方數(shù)5776的右邊,6與76都是同構(gòu)數(shù)。)

    例:編一函數(shù)fun(int x,int a[]),找出x(x<1000)以內(nèi)的所有同構(gòu)數(shù),存放于a數(shù)組,返回同構(gòu)數(shù)的個(gè)數(shù)。

    分析:本題就是對(duì)x以內(nèi)所有的數(shù)進(jìn)行過濾,求出x的平方,看看是否出現(xiàn)在平方數(shù)的右邊,同時(shí)要注意,x可能是一位數(shù)、兩位數(shù)或三位數(shù),就要分別用到%10,%100,%1000。函數(shù)如下:

    int fun(int x,int a[])

    { int i,y,m=10,n=0;

    for(i=2;i

    { if(i>10)m=100;

    if(i>100)m=1000;

    y=x*x;

    if(y%m==x)a[n++]=x;}

    return n;

    }

    拓展:對(duì)于同構(gòu)數(shù),要根據(jù)自身的位數(shù)來確定相應(yīng)的m,即除以m取余得到的數(shù)的位數(shù)與其一致,當(dāng)x的范圍擴(kuò)大時(shí),m也要隨之發(fā)生變化。

    5回文數(shù)

    回文數(shù)的定義:正讀與反讀都一樣的數(shù)。(如:1,11,121,1221等等)

    例:編一函數(shù)int fun(int x),判斷x是否為回文數(shù)。

    分析:要判斷x是否為回文數(shù),首先要求出x的逆序數(shù),然后判斷其逆序數(shù)是否與本身相等。函數(shù)如下:

    int fun(int x)

    { int y=0,z=x;

    while(x)

    { y=y*10+x%10;

    x/=10;

    }

    return y==z;

    }

    拓展:實(shí)際應(yīng)用中,需要判斷多個(gè)回文數(shù),那就需要對(duì)多個(gè)數(shù)逐一進(jìn)行判斷。同時(shí),將一個(gè)非回文數(shù),加上該數(shù)的逆序數(shù)后,就可能成為回文數(shù)。若仍然是非回文數(shù),則重復(fù)若干次上述步驟,總能得到回文數(shù)。

    以上特殊數(shù)的處理方法是中職學(xué)生在實(shí)際應(yīng)用中,經(jīng)常遇到的,也是近幾年江蘇省計(jì)算機(jī)專業(yè)對(duì)口單招考試中主要考點(diǎn),主要考查學(xué)生對(duì)循環(huán)和分支語句的靈活運(yùn)用。需要大家平時(shí)多注意積累,多動(dòng)腦筋,記住特殊數(shù)的處理方法,并將方法靈活運(yùn)用到平時(shí)的學(xué)習(xí)中去。中職學(xué)生包括廣大編程愛好者要多總結(jié),從而對(duì)循環(huán)及分支語句的使用能有進(jìn)一步的了解。當(dāng)然編程方法不唯一,希望大家八仙過海,各顯神通。

    參考文獻(xiàn):

    [1] 李秉璋.C語言程序設(shè)計(jì)與訓(xùn)練[M].大連:理工大學(xué)出版社,2011.

    [2] 孔線麗.計(jì)算機(jī)專業(yè)綜合理論復(fù)習(xí)用書 [M].2版.北京:原子能出版社,2007.

    猜你喜歡
    回文水仙花質(zhì)數(shù)
    生活中的質(zhì)數(shù)
    變型數(shù)獨(dú)4月挑戰(zhàn)賽
    奇妙的質(zhì)數(shù)約定
    VB學(xué)習(xí)天地
    水仙花
    養(yǎng)水仙花
    回文的美
    有趣的回文數(shù)
    讀寫算(中)(2015年12期)2015-11-11 05:05:45
    巧記質(zhì)數(shù)
    水仙花
    贵定县| 洛扎县| 扎赉特旗| 大理市| 宁远县| 长岭县| 大姚县| 吉安市| 怀远县| 曲靖市| 鹤庆县| 怀化市| 上饶市| 永泰县| 靖州| 张家川| 福州市| 安泽县| 西丰县| 资阳市| 泗阳县| 芦溪县| 徐汇区| 庆云县| 同仁县| 科尔| 隆化县| 昌邑市| 江北区| 集贤县| 松滋市| 东乡族自治县| 乌什县| 鄂尔多斯市| 乐都县| 石楼县| 博兴县| 新龙县| 苏州市| 信阳市| 钦州市|