本書是一本專門為程序員而寫的數(shù)學(xué)書,介紹了程序設(shè)計(jì)中常用的數(shù)學(xué)知識(shí)。本書門檻不高,不需要讀者精通很多高深的數(shù)學(xué)知識(shí),只需要讀者具備基本的四則運(yùn)算、乘方等數(shù)學(xué)基礎(chǔ)知識(shí)和日常生活中的基本邏輯判斷能力即可。本書拒絕枯燥乏味的講解,而是代之以輕松活潑的風(fēng)格。書中列舉了大量讀者都很熟悉,而且非常有趣的數(shù)學(xué)實(shí)例,并結(jié)合程序設(shè)計(jì)的思維和算法加以剖析,可以訓(xùn)練讀者的數(shù)學(xué)思維能力和程序設(shè)計(jì)能力,進(jìn)而拓寬讀者的視野,增強(qiáng)職場競爭力。 本書共11章,分別介紹了數(shù)據(jù)的表示、神奇的素?cái)?shù)、遞歸、排列組合、用余數(shù)進(jìn)行數(shù)據(jù)分組、概率、復(fù)利、數(shù)理邏輯、推理、幾何圖形構(gòu)造、統(tǒng)籌規(guī)劃等程序設(shè)計(jì)中常用的數(shù)學(xué)知識(shí),從而引導(dǎo)讀者深入理解編程中的數(shù)學(xué)方法和思路。本書包含的實(shí)例有結(jié)繩記事、孿生素?cái)?shù)、梅森素?cái)?shù)、哥德巴赫猜想、階乘、漢諾塔、斐波那契數(shù)列、乘法原理、加法原理、字符編碼、密碼長度、日歷中的數(shù)學(xué)、心靈感應(yīng)魔術(shù)、約瑟夫環(huán)、智叟分牛、百枚錢幣鼓士氣、莊家的勝率、中獎(jiǎng)概率、用概率方法求π值、復(fù)利的威力、對(duì)折紙張、舍罕王的賞賜、三段論、選言推理、假言推理、關(guān)系推理、花盆擺放、殘缺棋盤、丟失的線條、田忌賽馬、背包問題等。 本書適合廣大程序設(shè)計(jì)人員及數(shù)學(xué)愛好者閱讀,尤其適合有一定程序設(shè)計(jì)經(jīng)驗(yàn),但還需要進(jìn)一步加深對(duì)程序設(shè)計(jì)理解的人員閱讀。本書對(duì)IT求職人員、信息學(xué)競賽和大學(xué)生程序設(shè)計(jì)競賽等參賽學(xué)員也有很好的參考價(jià)值。 作者簡介 畢業(yè)于電子科技大學(xué)。高級(jí)程序員、某軟件公司的技術(shù)總監(jiān)。擅長C和C++語言,對(duì)數(shù)據(jù)結(jié)構(gòu)和算法有深入的研究。長期從事行業(yè)軟件設(shè)計(jì)和團(tuán)隊(duì)管理工作,已十年有余。有著豐富的IT架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)和行業(yè)咨詢經(jīng)驗(yàn)。負(fù)責(zé)過多個(gè)大型軟件項(xiàng)目的開發(fā)工作。
目錄: 第1章 數(shù)據(jù)的表示 1.1 一則童話 1.1.1 0和1的故事 1.1.2 0是什么都沒有? 1.1.3 0的位置 1.1.4 程序中的 1.2 司空見慣的十進(jìn)制數(shù) 1.2.1 遠(yuǎn)古的結(jié)繩記事 1.2.2 什么是十進(jìn)制計(jì)數(shù) 1.2.3 為啥人類習(xí)慣十進(jìn)制 1.2.4 十進(jìn)制運(yùn)算規(guī)則 1.2.5 十進(jìn)制數(shù)的分解 1.2.6 20!等于多少 1.2.7 大整數(shù)構(gòu)想 1.3 為啥要用二進(jìn)制 1.3.1 人腦與電腦 1.3.2 二進(jìn)制計(jì)數(shù)規(guī)則 1.3.3 簡單的二進(jìn)制運(yùn)算規(guī)則 1.3.4 二進(jìn)制數(shù)的分解 1.3.5 十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù) 1.4 還有哪些進(jìn)制 1.4.1 神奇的八卦:八進(jìn)制 1.4.2 鐘表使用的十二進(jìn)制 1.4.3 半斤八兩:十六進(jìn)制 1.4.4 60年一個(gè)甲子:六十進(jìn)制 1.4.5 各種進(jìn)制之間的轉(zhuǎn)換 1.4.6 二進(jìn)制與八進(jìn)制、十六進(jìn)制的轉(zhuǎn)換 第2章 神奇的素?cái)?shù) 2.1 怎么判斷素?cái)?shù) 2.1.1 什么是素?cái)?shù) 2.1.2 驗(yàn)證素?cái)?shù) 2.1.3 尋找素?cái)?shù)的算法 2.1.4 已被證明的素?cái)?shù)定理 2.2 孿生素?cái)?shù) 2.2.1 什么是孿生素?cái)?shù) 2.2.2 孿生素?cái)?shù)的公式 2.2.3 中國剩余定理 2.2.4 孿生素?cái)?shù)分布情況 2.3 使用素?cái)?shù)的RSA算法 2.3.1 什么是RSA 2.3.2 RSA算法基礎(chǔ) 2.3.3 RSA算法實(shí)踐 2.3.4 RSA應(yīng)用:數(shù)字簽名 2.3.5 RSA被破解的可能性 2.4 哥德巴赫猜想 2.4.1 哥德巴赫猜想是什么 2.4.2 數(shù)值驗(yàn)證 2.5 梅森素?cái)?shù) 2.5.1 什么是梅森素?cái)?shù) 2.5.2 已知的梅森素?cái)?shù)列表 第3章 遞歸——自己調(diào)用自己 3.1 從前有座山,山里有座廟 3.1.1 老和尚講的故事 3.1.2 德羅斯特效應(yīng) 3.1.3 什么是遞歸 3.1.4 用遞歸能解決哪些問題 3.1.5 一個(gè)簡單例子:求最大公約數(shù) 3.2 用遞歸計(jì)算階乘 3.2.1 階乘該怎么計(jì)算 3.2.2 階乘的遞歸計(jì)算方法 3.2.3 遞歸的過程 3.2.4 遞歸的本質(zhì):縮小問題規(guī)模 3.3 漢諾塔 3.3.1 古老的傳說 3.3.2 從兩個(gè)盤考慮 3.3.3 找出遞歸結(jié)構(gòu) 3.3.4 實(shí)現(xiàn)程序 3.3.5 究竟需要移動(dòng)多少次 3.4 斐波那契數(shù)列 3.4.1 兔子的家族 3.4.2 從最初幾月數(shù)據(jù)中找規(guī)律 3.4.3 斐波那契數(shù)列 3.4.4 神奇的魔八方 第4章 排列組合——讓數(shù)選邊站隊(duì) 4.1 把所有情況都列出來 4.1.1 從0還是1開始 4.1.2 賽程安排 4.2 乘法原理 4.2.1 行程安排的問題 4.2.2 乘法原理適用條件 4.2.3 棋盤上棋子的放法 4.2.4 買彩票保證中獎(jiǎng)的方法 4.3 加法原理 4.3.1 仍然是行程問題 4.3.2 總結(jié)出的加法原理 4.3.3 骰子出現(xiàn)偶數(shù)的次數(shù) 4.4 排列與組合的關(guān)系 4.4.1 排列 4.4.2 組合 4.4.3 排列與組合的聯(lián)系 4.4.4 可重排列 4.5 計(jì)算機(jī)中的字符編碼 4.5.1 ASCII碼能表示的字符數(shù)量 4.5.2 能表示更大范圍的編碼 4.6 密碼的長度 4.6.1 容易破解的密碼 4.6.2 多長的密碼才安全 4.6.3 密碼中使用的字符數(shù)量也很關(guān)鍵 第5章 余數(shù)——數(shù)據(jù)分組 5.1 復(fù)習(xí)小學(xué)的余數(shù) 5.1.1 自然數(shù)的余數(shù) 5.1.2 余數(shù)的性質(zhì) 5.1.3 用余數(shù)進(jìn)行分組 5.2 日歷中的數(shù)學(xué) 5.2.1 n天后是星期幾 5.2.2 下月的今天是星期幾 5.2.3 10年后的“今天”是星期幾 5.3 心靈感應(yīng)魔術(shù) 5.3.1 一個(gè)小魔術(shù) 5.3.2 魔術(shù)師是怎么猜出來的 5.4 奇偶校驗(yàn) 5.4.1 不可靠的網(wǎng)絡(luò)傳輸 5.4.2 用奇偶校驗(yàn)檢查錯(cuò)誤 5.5 呂洞賓不能坐首位 5.5.1 座位安排 5.5.2 試排座位找規(guī)律 5.5.3 西方的約瑟夫環(huán) 5.5.4 用數(shù)學(xué)方法解約瑟夫環(huán) 5.6 智叟分牛 5.6.1 遺產(chǎn)分配難題 5.6.2 智叟給出的分配方案 5.6.3 分配原理 第6章 概率——你運(yùn)氣好嗎 6.1 初中學(xué)習(xí)過的概率 6.1.1 誰先開球 6.1.2 用程序模擬拋硬幣 6.1.3 什么是概率 6.1.4 必然事件與不可能事件 6.1.5 概率的基本性質(zhì) 6.2 百枚錢幣鼓士氣 6.2.1 狄青的計(jì)謀 6.2.2 全為正面的概率是多少 6.2.3 必然還是偶然 6.3 莊家的勝率是多少 6.3.1 一個(gè)看似公平的游戲 6.3.2 莊家能贏錢嗎 6.3.3 莊家盈利比率 6.3.4 游戲參與者獲勝的概率 6.4 你能中獎(jiǎng)嗎 6.4.1 想中大獎(jiǎng)嗎 6.4.2 計(jì)算中獎(jiǎng)概率 6.5 漁塘中有多少條魚 6.5.1 該怎么估算漁塘中的魚 6.5.2 用概率來估算 6.5.3 用概率方法求π值 第7章 翻一番是多少 7.1 翻番的概念 7.1.1 什么是翻番 7.1.2 翻倍的概念 7.1.3 計(jì)算倍數(shù)和番數(shù) 7.2 復(fù)利的威力 7.2.1 利潤——投資回報(bào) 7.2.2 認(rèn)識(shí)單利 7.2.3 認(rèn)識(shí)復(fù)利 7.2.4 計(jì)算投資回報(bào)的程序 7.2.5 忘還錢的信用卡 7.2.6 愛因斯坦的72法則 7.3 對(duì)折紙張 7.3.1 有趣的問題:紙張對(duì)折 7.3.2 100米長的紙能對(duì)折幾次 7.3.3 計(jì)算對(duì)折次數(shù)的程序 7.4 一棋盤的麥子 7.4.1 舍罕王的賞賜 7.4.2 需要多少麥粒 7.5 折半法的運(yùn)用 7.5.1 翻番的逆運(yùn)算 7.5.2 找出假硬幣 7.5.3 編寫程序找出假硬幣 7.5.4 折半法在查找中的應(yīng)用 第8章 數(shù)理邏輯——非此即彼 8.1 邏輯的重要性 8.1.1 模棱兩可的表述 8.1.2 肯定或否定 8.1.3 程序中的邏輯判斷 8.2 命題邏輯 8.2.1 什么是命題 8.2.2 命題的邏輯形式 8.2.3 簡單命題 8.2.4 復(fù)合命題 8.2.5 復(fù)合命題的聯(lián)結(jié)詞 8.3 布爾邏輯 8.3.1 邏輯或 8.3.2 邏輯與 8.3.3 邏輯非 8.3.4 邏輯異或 8.3.5 二進(jìn)制位運(yùn)算 8.4 考慮到各種可能了嗎 8.4.1 邏輯重疊的實(shí)例 8.4.2 邏輯遺漏的實(shí)例 8.4.3 用數(shù)軸確定邊界 8.5 用卡諾圖簡化邏輯函數(shù) 8.5.1 什么是卡諾圖 8.5.2 三變量卡諾圖 8.5.3 四變量卡諾圖 8.5.4 卡諾圖化簡 8.5.5 卡諾圖中的相鄰 第9章 推理——邏輯的應(yīng)用 9.1 演繹推理 9.1.1 認(rèn)識(shí)演繹推理點(diǎn) 9.1.2 三段論 9.1.3 選言推理 9.1.4 假言推理 9.1.5 關(guān)系推理 9.1.6 演繹推理綜合實(shí)例 9.2 歸納推理 9.2.1 什么是歸納推理 9.2.2 完全歸納推理 9.2.3 不完全歸納推理 9.3 足球比賽的得分 9.3.1 粗心的記分員 9.3.2 從已有數(shù)據(jù)推算出比分 第10章 幾何圖形構(gòu)造 10.1 花盆擺放問題 10.1.1 10盆花擺成5行,每行4盆 10.1.2 轉(zhuǎn)變思路,找出答案 10.1.3 升級(jí)問題(10盆花擺10行,每行3盆) 10.2 殘缺的棋盤能補(bǔ)上嗎? 10.2.1 被切割的棋盤 10.2.2 能拼接出殘缺棋盤嗎 10.3 線條哪里去了? 10.3.1 神奇的魔術(shù) 10.3.2 解析丟失的線條 10.4 圖形剪拼 10.4.1 均分三角形 10.4.2 拼接正方形 第11章 統(tǒng)籌規(guī)劃 11.1 認(rèn)識(shí)統(tǒng)籌規(guī)劃 11.1.1 田忌賽馬 11.1.2 為什么會(huì)贏 11.2 生活中的統(tǒng)籌規(guī)劃 11.2.1 匆忙的早晨 11.2.2 如何節(jié)約運(yùn)輸成本 11.3 著名的背包問題 11.3.1 什么是背包問題 11.3.2 用遞歸程序解決背包問題 11.3.3 用窮舉法解決背包問題
|