歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOCX文檔下載  

《算法設(shè)計與分析》實驗一

  • 資源ID:20452831       資源大小:283.57KB        全文頁數(shù):17頁
  • 資源格式: DOCX        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

《算法設(shè)計與分析》實驗一

學(xué)號1421050102算法設(shè)計與分析實驗報告一學(xué)生姓名Cherish專業(yè)、班級地 理指導(dǎo)教師唐 國 峰成績計算機與信息工程學(xué)院軟件工程系2017 年 3 月 14 日實驗一:遞歸策略運用練習(xí)一、實驗?zāi)康谋敬?是 算法的算法 及 用 ,旨在加深學(xué)生 算法原理的理解,提高學(xué)生運用 算法解決 的能力。二、實驗步驟與要求1 前復(fù) 程所學(xué)知 以及 和理解指定的 外 材料;2學(xué)生獨自完成 指定內(nèi)容;3 束后,用 一的 告模板 寫 告。4 提交 明:( 1) 子版提交 明:a 需要提交Winrar 包,文件名 “算法 與分析 一_學(xué)號 _姓名”,如“算法 與分析 一_09290101_ 三”。b 包內(nèi) 一個“ 算法 與分析 一_學(xué)號 _姓名”命名的 文件 ,其下 兩個文件 ,一個文件 命名 “源程序”,另一個文件 命名 “ 告 子版” 。其下分 放置 成果物。( 2)打印版提交 明:a 不可隨意更改模板 式。b 字體:中文 宋體,大小 10 號字,英文 Time New Roman ,大小 10 號字。c 行 距: 倍行距。( 3)提交截止 : 2017 年 3 月 28 日 16:00。三、 實驗項目1運用 策略 算法 下述 目的求解 程。 目列表如下:【必做 】( 1)運 會開了N 天,一共 出金牌M 枚。第一天 金牌1 枚加剩下的七分之一枚,第二天 金牌2 枚加剩下的七分之一枚,第 3 天 金牌3 枚加剩下的七分之一枚,以后每天都照此 理。到了第N 天 好 有金牌N 枚,到此金牌全部 完。 程求N 和 M 。( 2)國王分 。某國王 前 兒子 分 。他把 分 若干份,然后 第一個兒子一份,再加上剩余 的1/10 ; 第二個兒子兩份,再加上剩余 的1/10 ; 第個兒子 i 份,再加上剩余 的1/10 。每個兒子都竊竊自喜。以 得到了父王的偏 ,孰不知國i王是“一碗水端平”的。 用程序回答,老國王共有幾個兒子? 共分成了多少份?( 3)出售金 :第一次 出全部金 的一半加二分之一條金 ;第二次 出乘余金 的三分之一加三分之一條金 ; 第三次 出剩余金 的四分之一加四分之一條金 ; 第四次 出剩余金 的五分之一加五分之一條金 ; 在 剩下 11 條金 ,在出售金 不能把金 切開或者有任何破 的。 缸里原有多少條金 ?( 4)某路公共汽 , 共有八站,從一號站 上已有n 位乘客,到了第二站先下一半乘客,再上來了六位乘客;到了第三站也先下一半乘客,再上來了五位乘客,以后每到一站都先下 上已有的一半乘客,再上來了乘客比前一站少一個,到了 點站 上 有乘客六人, 上的乘客有多少?( 5)猴子吃桃。有一群猴子摘來了一批桃子,猴王 定每天只準(zhǔn)吃一半加一只(即第二天吃剩下的一半加一只,以此 推) ,第九天正好吃完, 猴子 摘來了多少桃子?( 6)小 。第一天 了全 的一半加二 ,第二天 了剩下的一半加二 ,以后天天如此,第六天 完了最后的三 , 全 有多少 ?( 7)日本著名數(shù)學(xué)游 家中村 作教授提出 一個 :父 將2520 個桔子分 六個兒子。分完后父 : “老大將分 你的桔子的1/8 老二;老二拿到后 同原先的桔子分1/7 老三;老三拿到后 同原先的桔子分1/6 老四;老四拿到后 同原先的桔子分1/5 老五;老五拿到后 同原先的桔子分1/4 老六;老六拿到后 同原先的桔子分1/3 老大”。 果大家手中的桔子正好一 多。 六兄弟原來手中各有多少桔子?( 8)某種 染病第一天只有一個患者,前5 天 潛伏期,不 作也不會 染人,第6 天開始 作,從 作到治愈需要5 天 ,期 每天 染3 個人,求第N 天共有多少患者?!?做 】( 5 選 3)( 1) 了保障社會秩序,保 人民群眾生命 安全,警察叔叔需要與罪犯斗智斗勇,因而需要 常性地 行體力 和智力 !某批警察叔叔正在 行智力 :1 2 3 4 5 6 7 8 9 = 110; 看上 的算式, 了使等式成立,需要在數(shù)字 填入加號或者減號(可以不填, 但不能填入其它符號) 。之 沒有填入符號的數(shù)字 合成一個數(shù),例如:12+34+56+7-8+9就是一種合格的填法; 123+4+5+67-89是另一個可能的答案。 你利用 算機的 ,幫助警察叔叔快速找到所有答案。每個答案占一行。形如:12+34+56+7-8+9123+4+5+67-89( 2) 將一個整數(shù) 出。形如654321, 出 1,2,3,4,5,6( 3)用 分解 因數(shù)。形如:12=2*2*3( 4)50 個 梯,你一次可以上一 或兩 ,走上去,共有多少種走法?( 5) 號 的字符 合。 目:在 或者手機上,一個數(shù)字如2 著字母ABC ,7 著 PQRS。那么數(shù)字串 27 所 的字符的可能 合就有 3*4=12 種(如 AP, BR 在 入一個 3 到 11 位 的 號 , 打印出 個 號 所 的字符的所有可能 合和 等)。 合數(shù)。四、實驗過程以下程序都是在VS2010 下編譯與VC6.0代碼稍有不同。(1)運 會開了N 天,一共 出金牌M 枚。第一天 金牌1 枚加剩下的七分之一枚,第二天 金牌 2 枚加剩下的七分之一枚,第 3 天 金牌3 枚加剩下的七分之一枚,以后每天都照此 理。到了第 N 天 好 有金牌N 枚,到此金牌全部 完。 程求N 和 M 。 目分析依據(jù) 目可寫出 式:(F(n)-n)*6/7=F(n+1);F(n)是第n天 牌 數(shù)即第n-1天剩余的包括第n天 的和剩下的。每天 放的金牌數(shù):當(dāng)天天數(shù) +(前一天剩余金牌 -當(dāng)天天數(shù)) /7,所以判 的條件是(前一天剩余金牌 -當(dāng)天天數(shù)) 為 7的整數(shù)倍, 第 i+1 天的金牌數(shù)即 i天剩下的必 是 6的整數(shù)倍。算法構(gòu)造遞歸函數(shù): nSum(i+1,n)=(nSum(i,n)-i)*6/7.篩選條件:(nSum(i,n)-i)%7=0&&(nSum(i,n)%6=0)算法實現(xiàn)#include<stdio.h>#define devide 7; /不知什么原因這樣定義下面不能用?vc6.0未安上,不知與vs2010 有和區(qū)別?int nSum(int i,int n)/nSum()函數(shù)定義第i 天的金牌數(shù)即i-1天剩下.int result=0;if(i=n)return n;elseresult=(nSum(i+1,n)*7)/6+i);/ 遞歸函數(shù):nSum(i+1,n)=(nSum(i,n)-i)*6/7.return result;void main()for(int n=2;n<=10;n+)/ 遞增比賽天數(shù)逐個驗證int skip=0;for(int i=1;i<=n;i+)/ 依次篩選從 i=1 到 n符合條件的 n值剩余金牌if(nSum(i,n)-i)%7=0&&(nSum(i,n)%6=0)/ 每天發(fā)放的金牌數(shù):當(dāng)天天數(shù)- 當(dāng)天天數(shù))/7 ,即(前一天剩余金牌- 當(dāng)天天數(shù))為7的整數(shù)倍+(前一天int skip=1; /遞歸函數(shù):nSum(i+1,n)=(nSum(i,n)-i)*6/7即nSum(i,n)=nSum(i+1,n)*7/6+i,第 i+1 天的金牌數(shù)即i 天剩下的必須是6的整數(shù)倍printf( " 共有金牌 %d枚, 共進行 %d天 n" ,nSum(1,n),n); / 金牌總數(shù)即第一天金牌數(shù) for(int j=1;j<=n;j+)printf( " 第 %d天, 發(fā)放 %d+%d枚, 還剩 %d枚n",j,j,(nSum(j,n)-j)/7,(nSum(j,n)-j)*6/7);break;if(skip=1 ) / / 用于跳出雙層循環(huán)結(jié)構(gòu)即n遞增時第一個滿足時即可輸出,可運行結(jié)果卻不然break;/ 會有在 n上界內(nèi)更多的結(jié)構(gòu)輸出,只有第一個n值滿足不知為何?getchar();運行 果經(jīng)驗歸納 式容易想出,但是相 的 條件比 確定。(2)國王分 。某國王 前 兒子 分 。他把 分 若干份,然后 第一個兒子一份,再加上剩余 的 1/10 ; 第二個兒子兩份,再加上剩余 的 1/10 ; 第 i 個兒子 i 份,再加上剩余 的 1/10 。每個兒子都竊竊自喜。 以 得到了父王的偏 , 孰不知國王是 “一碗水端平”的。 用程序回答,老國王共有幾個兒子? 共分成了多少份? 目分析 道國王分 的 和上 運 會 金牌 似,不 在 條件 由 意略不同其 也是一 ,每個兒子分到的 相同即:E(i+1,n)-E(i,n)=E(i,n)-E(i-1,n),且第i 個兒子分i 份及剩下的1/10,即E(i,n)-i的差是10 的整數(shù)倍。算法構(gòu)造 函數(shù): E(i+1,n)=(E(i,n)-n)*9/10;E(i,n) 條件: 每個兒子分到的 相同即 當(dāng)要分 第i 個兒子 有的份數(shù);E(i+1,n)-E(i,n)=E(i,n)-E(i-1,n);且第 i個兒子分i 份及剩下的1/10,即 E(i,n)-i的差是10的整數(shù)倍。算法 #include<stdio.h>#define devide 10; / 定 到后面不知怎么卻出 。int E(int i,int n) / 函數(shù):E(i+1,n)=(E(i,n)-n)*9/10;E(i,n) 當(dāng)要分 第i 個兒子 有的份數(shù);int sum=0;if(i=n)return n; / 當(dāng)份到最后一個兒子 分完,往前求解;elsesum=(E(i+1,n)*10)/9+i;/ 依次 ;return sum;void main()for(int n=3;n<=10;n+)int skip=0;for(int i=2;i<n;i+)/ 每個兒子分到的財產(chǎn)相同即E(i+1,n)-E(i,n)=E(i,n)-E(i-1,n);/ 且第 i個兒子分i 份及剩下的1/10,即 E(i,n)-i的差是10的整數(shù)倍;if(2*E(i,n)-E(i-1,n)-E(i+1,n)=0)&&(E(i,n)-i)%10=0)/ 用這兩個條件篩選;int skip=1;printf( " 國王共有 %d個兒子 , 財產(chǎn)共分成%d份。n" ,n,E(1,n);/ 總份數(shù)即要分第一個兒子時有的分?jǐn)?shù)E(1,n)for(int j=1;j<=n;j+)printf ( " 第%d個兒子,分 %d+%d份,還剩 %d份。n",j,j,(E(j,n)-j)/10,(E(j,n)-j)*9/10);break;if(skip=1)break;getchar();運行結(jié)果經(jīng)驗歸納由于和第一題類似,此題較為順利,類似多練習(xí)也會得心應(yīng)手。(3)出售金魚問題:第一次賣出全部金魚的一半加二分之一條金魚;第二次賣出乘余金魚的三分之一加三分之一條金魚; 第三次賣出剩余金魚的四分之一加四分之一條金魚; 第四次賣出剩余金魚的五分之一加五分之一條金魚;現(xiàn)在還剩下 11 條金魚,在出售金魚時不能把金魚切開或者有任何破損的。問這魚缸里原有多少條金魚?題目分析與上題類似出口為第四次買之前還有減去第四次買的還有11 條。算法 #include<stdio.h>#define n 4;int Fish(int i)/ 構(gòu)造函數(shù)Fish(i) 第 i天 之前 剩多少,F(xiàn)ish(1) 即 數(shù);int result=0;if(i<4)result=(Fish(i+1)+(Fish(i+1)+1)/i);elsereturn 14; / 第四天 之前的- 第四天 的=11,即Fish(4)-(Fish(4)/5+1/5)=11,F(4)=11return result;void main()printf(" 共有金 %d 條。 n",Fish(1);for(int i=1;i<=4;i+)printf(" 第 %d 天 ,賣 %d 條, 剩 %d條。 n",i,(Fish(i)+i)/(i+1),(Fish(i)-(Fish(i)+i)/(i+1);getchar();運行 果 :以上 目 似可 比做出。4.某路公共汽 , 共有八站,從一號站 上已有n 位乘客,到了第二站先下一半乘客,再上來了六位乘客;到了第三站也先下一半乘客,再上來了五位乘客,以后每到一站都先下 上已有的一半乘客,再上來了乘客比前一站少一個,到了 點站 上 有乘客六人,問發(fā)車時 上的乘客有多少? 目分析此 與以上幾 似,略有不同而已。算法構(gòu)造由于從第一站出 沒有任何 ,故將第二站作 始 站;函數(shù) Bus(i) 到達第 i站 未上下乘客 上人 數(shù)量;算法實現(xiàn)#include<stdio.h>i nt Bus(int i) / 由于從第一站出發(fā)沒有任何變動,故將第二站作為始發(fā)站;/ 函數(shù) Bus(i)為到達第 i 站還未上下乘客時車上人員數(shù)量;int sum=0;if(i<6)/sum=2*(Bus(i+1)+i-7);/ 有遞歸函數(shù):Bus(i+1)=Bus(i)/2+7-i;elsereturn 10; / / 由最后還剩6人推的 Bus(6)=10;r eturn sum;void main()printf(" 發(fā)車時車上共有%d 人。 n",Bus(1);for(int i=1;i<6;i+)printf(" 第 %d 站 ,上來 %d 人 ,下去 %d 人 ,剩下 %d 人 n",i+1,(7-i),(Bus(i)/2),Bus(i+1); getchar();運行結(jié)果( 5)猴子吃桃。有一群猴子摘來了一批桃子,猴王規(guī)定每天只準(zhǔn)吃一半加一只(即第二天吃剩下的一半加一只,以此類推) ,第九天正好吃完,問猴子們摘來了多少桃子?題目分析與上題類似算法構(gòu)造遞推函數(shù)Monkey(i) 表示第i 天吃的和剩下的和;由Monkey(i+1)=Monkey(i)/2-1推得;由 Monkey(9)=Monkey(9)/2+1, 得出口 Monkey(9)=2 。算法實現(xiàn)#include<stdio.h>int Monkey(int i)/ 遞推函數(shù)Monkey(i)表示第i 天吃的和剩下的和;int sum=0;if(i<9)sum=2*(Monkey(i+1)+1);/ / 由 Monkey(i+1)=Monkey(i)/2-1推得;elsereturn 2; /由 Monkey(9)=Monkey(9)/2+1,得出口Monkey(9)=2;return sum;void main()printf(" 共有桃子 %d 個。 n",Monkey(1);for(int i=1;i<=9;i+)printf(" 第 %d 天,吃 %d+%d 個,剩下 %d個。 n",i,Monkey(i)/2,1,Monkey(i)/2-1); getchar();運行 果( 6)小 。第一天 了全 的一半加二 ,第二天 了剩下的一半加二 ,以后天天如此,第六天 完了最后的三 , 全 有多少 ? 目分析與以上 目 似。算法構(gòu)造構(gòu)造 推函數(shù):Book(i); 表示第 i 天要 剩的 數(shù);由Book(i+1)=Book(i)-(Book(i)/2+2)得出;由 Book(5)-(Book(5)+2)=3 可得出口;算法 #include<stdio.h>int Book(int i) / 構(gòu)造 推函數(shù):Book(i);表示第i 天要 剩的 數(shù);int sum=0;if(i<5)sum=2*(Book(i+1)+2);/ 由 Book(i+1)=Book(i)-(Book(i)/2+2)得出;elsereturn 10; / 由 Book(5)-(Book(5)+2)=3 return sum;可得出口;void main()printf(" 全書共 %d 頁。 n",Book(1);for(int i=1;i<=5;i+)printf(" 第 %d 天,看 %d+%d 頁,還剩 %d頁。 n",i,Book(i)/2,2,Book(i)/2-2); getchar();運行結(jié)果( 7)日本著名數(shù)學(xué)游戲?qū)<抑写辶x作教授提出這樣一個問題:父親將2520 個桔子分給六個兒子。分完后父親說: “老大將分給你的桔子的1/8 給老二;老二拿到后連同原先的桔子分 1/7給老三;老三拿到后連同原先的桔子分1/6 給老四;老四拿到后連同原先的桔子分 1/5給老五;老五拿到后連同原先的桔子分1/4 給老六;老六拿到后連同原先的桔子分 1/3 給老大”。結(jié)果大家手中的桔子正好一樣多。問六兄弟原來手中各有多少桔子?題目分析由老大開始分給老二,當(dāng)老大拿到老六的后總數(shù)達到平均數(shù),以此為入口進行遞推。算法構(gòu)造第一個孩子從國王那里分到的桔子總數(shù)應(yīng)為平均數(shù)減去最后一個孩子分出去的部分后乘以 8/7 。算法實現(xiàn)#include <stdio.h>#define DENOMINATOR_MAX 8/ 分母最大值#define DENOMINATOR_MIN 3/ 分母最小值/ai0表示第 i 個孩子分出的桔子總數(shù)/ai1表示第 i 個孩子從國王那里分到的桔子總數(shù)int Orange(int a52,int i)int average=2520/6;int p;if (i=0)/ 第一個孩子從國王那里分到的桔子總數(shù)應(yīng)為平均數(shù)減去最后一個孩子分出去的部分后乘以 8/7 。ai1 =(average-average/(DENOMINATOR_MIN-1)*(DENOMINATOR_MAX-i)/(DENOMINATOR_MAX-1-i);/ 第一個孩子分給第二個孩子的桔子數(shù)量。ai0 = ai1 - (average-average/(DENOMINATOR_MIN-1);else/ 第 i 個孩子從國王那里分到的桔子總數(shù)。ai1 = average *(DENOMINATOR_MAX-i)/(DENOMINATOR_MAX-1-i) - Orange(a,i-1);/ 第 i 個孩子分給第 i+1 個孩子的桔子數(shù)量。ai0 = ai1 + Orange(a,i-1) - average;p=ai0;return p;/ 主函數(shù)void main()int ora52=0,0,0,0,0,0,0,0,0,0;Orange(ora,5);for(int j=0;j<=5;j+)printf("第 %d 個孩子分出%d 個橘子。n",j+1,oraj0);printf("國王最初分配桔子狀況如下所示:n");for(int k=0;k<=5;k+)printf("第 %d個孩子從國王那里分得%d 個橘子。n",k+1,orak1);getchar();運行結(jié)果( 8)某種傳染病第一天只有一個患者,前5 天為潛伏期,不發(fā)作也不會傳染人,第始發(fā)作,從發(fā)作到治愈需要5 天時間,期間每天傳染3 個人,求第N 天共有多少患者。6 天開題目分析第n天的病總?cè)藬?shù)包括n-1天潛伏的和發(fā)作的在當(dāng)天又傳染的人數(shù)再去掉當(dāng)天治愈的;算法構(gòu)造遞推函數(shù):該病五天內(nèi)潛伏第六天發(fā)病后五天內(nèi)治愈。 Day(n)=Day(n-5)*3+Day(n-1); 算法實現(xiàn)#include<stdio.h>#include<stdlib.h>int Day(int n) / 遞推函數(shù):該病五天內(nèi)潛伏第六天發(fā)病后五天內(nèi)治愈。int sum=0;if(n<=5) / 五天內(nèi)只有一個潛伏病人。return 1;elsesum=Day(n-5)*3+Day(n-1) ; / 第 n天的病總?cè)藬?shù)包括 n-1 天潛伏的和發(fā)作的在當(dāng)天又傳染的人數(shù)再去掉當(dāng)天治愈的;/Day(n)=Day(n-5)*3+Day(n-1);return sum;void main()int nprintf(" 請輸入傳染病發(fā)生后的天數(shù):n" );scanf_s( "%d",&n,2);for(int i=1;i<=n;i+)printf(" 第 %d天 ,得病的人數(shù) %dn",i,Day(i);system( "pause" );運行結(jié)果選做題:( 5 選 3)( 4) 50 個階梯,你一次可以上一階或兩階,走上去,共有多少種走法?題目分析這道題讓我想到高中時做過的同樣的一道排列組合題,但此題要用計算機編程求出具體數(shù)字,不像高中時只用代數(shù)式表達。算法構(gòu)造假設(shè)為 20 階: C( 0 20)+ C( 1 19)+ C( 2 18) + C( 3 17)+ C( 4 16)+ C(5 15)+ C( 6 14)+ C ( 7 13) + C( 8 12)+ C (9 11) + C( 10 10)算法實現(xiàn)#include<stdio.h>#include<stdlib.h>int stairs(int n)if(n=1)return 1;if(n=0)return 1;return stairs(n-1)+stairs(n-2); / 根據(jù)有 1階依次往上遞推發(fā)現(xiàn)符合斐波那契數(shù)列/ an=an-1+an-2void main()int j;printf(" 請輸入樓梯階數(shù):n");scanf_s("%d",&j,2);for(int i=1;i<=j;i+)printf(" 當(dāng)有 %d 階樓梯 ,共有 %d種走法。 n",i,stairs(i);system("pause");運行結(jié)果數(shù)據(jù)可能過大或者電腦太low 等了幾分鐘未見結(jié)果,根據(jù)后幾階時可判斷是對的。經(jīng)驗歸納有些題看似困難當(dāng)理清思路也可有據(jù)可循。( 2)遞歸將一個整數(shù)輸出。形如654321,輸出 1,2,3,4,5,6題目分析將一個整數(shù)逆序輸出可以看做把一個字符串逆序輸出,用指針逐個輸出。算法構(gòu)造reverse(constchar *p) 字符串遞推函數(shù):設(shè)定字符串指針*p ;算法實現(xiàn)程序源代碼#include<stdio.h>void reverse(const char *p) / 字符串遞推函數(shù):設(shè)定字符串指針*p ;if(*p=0) / 指針從右向左移動由于判斷字符串尾部位置;return;reverse(p+1); / 指針向前移動p+1printf("%c , ",*p);/ / 輸出當(dāng)前指針指向的字符;void main()char *pString;pString="123456"printf(" 輸入的字符串:%sn",pString);reverse(pString);getchar();運行結(jié)果經(jīng)驗歸納巧用字符串指針可以簡化程序。( 3)用遞歸實現(xiàn)分解質(zhì)因數(shù)。形如:12=2*2*3 題目分析質(zhì)因數(shù) n 即只能被本身和1 整除的數(shù),在2 到可分解。算法構(gòu)造n-1間篩選能被n 整除且是質(zhì)因數(shù)的數(shù)即bool IsPrime(int num)/判斷質(zhì)因數(shù);if(IsPrime(i)&&( num % i = 0 )/判斷除數(shù)是否為質(zhì)因數(shù);num = num / i;PrimeFactorization(num); 若是其一則保留對剩下的商繼續(xù)判別;算法實現(xiàn)#include <stdio.h>#include<stdlib.h>/ 質(zhì)因數(shù)判斷函數(shù)bool IsPrime(int num) / 判斷質(zhì)因數(shù);int i;for (i = 2; i < num; i+)if ( num % i = 0 )/ 如果從 2到 num-1的數(shù)里有能被整除的,說明num不是質(zhì)因數(shù)。return false;/ / 如果從 2到 num-1的數(shù)里沒有能被整除的,說明num是質(zhì)因數(shù)。return true;void PrimeFactorization(int num)int i;for (i=2; i<=num; i+)if(i = num)printf("%d",i);else if(IsPrime(i)&&( num % i = 0 )/ 質(zhì)因數(shù)判斷函數(shù);/ 將找到的質(zhì)因數(shù)追加到字符串中。printf("%d*",i);/ 將剩下部分遞歸分解。num = num / i;PrimeFactorization(num);break;void main()int num;printf(" 請輸入一個小于10 位的整數(shù): n");scanf_s("%d",&num,10);printf(" 質(zhì)因數(shù)分解:n%d=",num);/調(diào)用分解質(zhì)因數(shù)函數(shù)。PrimeFactorization(num);printf("n");system("pause");運行結(jié)果經(jīng)驗歸納弄清題目關(guān)鍵字的概念對編程很是關(guān)鍵。五、實驗總結(jié)編程蠻有意思,在這里能夠格物致知看到不一樣的世界。

注意事項

本文(《算法設(shè)計與分析》實驗一)為本站會員(緣***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!