【小白必懂】C語言最大、最小公約數題解

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我,若你是真心學習可以送你書籍,指導你學習,給予你目標方向的學習路線,無套路,博客為證。

前言

本專欄內容將會以輕松、簡單的方式完成習題的解答,用情景再現的文章風格使讀者能夠在輕松愉悅的閱讀氛圍中完成知識的吸收,本專欄考慮讀者的吸收能力,不講解過多高效的計算方法,降低閱讀門檻,希望各位多多支持~

作者簡介

作者名:1_bit

簡介:CSDN博客專家,2020年博客之星TOP5,藍橋簽約作者。15-16年曾在網上直播,帶領一批程序小白走上程序員之路。歡迎各位小白加我咨詢我相關信息,迷茫的你會找到答案。

博客地址:https://i1bit.blog.csdn.net


情景再現(以下內容不考慮數字 1 為約數)

👸小媛:小C 今天我又遇見一個我不懂的知識點了。 😰

🐰小C:什么知識點?

👸小媛:是數學相關的。 😭

🐰小C:正常,很多知識點不用就會忘記的,沒什么好擔心的。說吧,是什么知識點呢?

👸小媛:就是公約數,公約數我忘記了是什么知識了。 😫

🐰小C:哈哈哈,沒事,其實我也忘記什么是公約數了,剛剛就在你提問的瞬間我搜索了一下然后就記起來了。

👸小媛:你是在安慰我。

🐰小C:哈哈哈,真的,忘記很正常,你也別沮喪了,我先告訴你什么是公約數吧?

👸小媛:跪謝大佬指教! 😐

🐰小C:我們先看看什么是約數吧。如果有一個自然數例如 15,這個數字 15 能夠被 5 整除,這個時候我們就可以稱 5 是 15 的約數,15 則是 5 的倍數,這個知識點懂了吧?

👸小媛:哈哈哈,懂了,原來那么簡單。

🐰小C:那我們再看看公約數是什么。現在我們假設有兩個數,一個是 15 一個是 30,他們兩者都可以被同樣的數字整除,例如 5、10、15,那么 5、10、15 這幾個數就是 15 與 30 的 公有 約數,所以我們就稱為公約數。

👸小媛:唔,我懂了,我現在是要寫一道題目,需要用戶輸入兩個數字,然后判斷這兩個數的最大公約數和最小公約數。 😂

🐰小C:嗯,挺簡單的。你看 5、10、15 是 15 月 30 的公約數,那么最大的公約數就是 15,最小的公約數就是 5了,簡單吧。

👸小媛:哈哈哈,簡單是簡單,那程序要怎么寫呢?

🐰小C:首先肯定是要用戶輸入兩個數吧?

👸小媛:是的。

🐰小C:那你就寫出來吧,如何接收用戶輸入并且存儲兩個變量的代碼。

👸小媛:嗯,寫好了,在下面。

int a,b;
printf("請輸入兩個數,并且使用空格間隔:");
scanf("%d%d", &a, &b);

👸小媛:我創建了兩個變量,一個是 a 一個是 b,分別存儲用戶輸入的內容,但是接下來我不懂怎么做了。

🐰小C:接下來也很簡單,但是我得先告訴你一個概念。例如有兩個數,一個是 15 一個是 30,他們之間的公約數有哪些?

👸小媛:有 5 和 15。

🐰小C:最大公約數此時是 15,你發現了嗎?他們之間最大的公約數,是不能超過 15 與 30 之間最小的那個數的。

👸小媛:真的嗎?

🐰小C:那我給你舉個例子吧,現在有兩個數 20 和 40,他們之間最大公約數是幾呢?

👸小媛:是 20 。

🐰小C:那 50 跟 100 呢?他們之間的最大公約數是幾呢?

👸小媛:最大公約數是 50,好像是真的耶,他們之間的最大公約數是不能超過求最大公約數的兩個數中最小的那一個。

🐰小C:因為數值本身除本身就是 1,若你超過了那不就是小數了嗎?

👸小媛:哈哈哈,是這個理。 😋

🐰小C:所以接下來我們就很簡單的做了。編寫一個循環,這個循環的循環變量等于求最大公約數中最小的一個,此時循環變量只要每次減 1,循環的尋找最大公約數就可以了。

👸小媛:為什么要每次都減 1 呢?

🐰小C:就像 15 和 25 的最大公約數 5 一樣,必定是小于15 的,此時我們只需要從 15 遞減去尋找,那么肯定就會找得到這個值。

👸小媛:唔,懂了,所以代碼是不是應該要寫成這樣?

#include<stdio.h>
int main()
{int a,b,i;printf("請輸入兩個數,并且使用空格間隔:");scanf("%d%d", &a, &b);if(a>b){i=b;}else{i=a;}for(; i>0; i--){}return 0;
}

🐰小C:對的,你寫對咯。首先我們使用 if 語句,判斷輸入的值 a 與 b 哪一個比較小,如果 b 數值小的話就存儲到循環變量 i 中,否則 i 就是存儲變量 a 的內容,此時通過 i 這個循環變量進行遞減,就可以逐步的找到最大公約數了。但是你的代碼這里有點問題喲。

👸小媛:什么問題? 😱

🐰小C:就是你是否允許 a 數和 b 數兩者的值一樣呢?

👸小媛:嗯,不允許吧。對喲,我應該加個判斷,不允許兩個數一致,我代碼改成這樣了,你看一下。

#include<stdio.h>
int main()
{int a,b,i;printf("請輸入兩個數,并且使用空格間隔:");scanf("%d%d", &a, &b);if(a==b){printf("\n 兩個數不能相等");return 0;}if(a>b){i=b;}else{i=a;}for(; i>0; i--){}return 0;
}

👸小媛:結果也測試了。

🐰小C:嗯,你在用戶輸入數字后,判斷兩個數值是否相等,如果相等就使用 return 進行程序跳出,不錯,是寫對了。現在開始添加判斷最大公約數的代碼吧,現在會了吧?

👸小媛:當然會了,循環中添加這個代碼就可以了。

for(; i>0; i--){if(a%i==0 && b%i==0){printf("最大公約數是:%d\n", i);break;}
}

🐰小C:不錯,代碼是正確的,直接使用 if 語句判斷 a 數和 b 數 兩個數除循環變量 i ,如果都是除的斷那么這個循環變量 i 此時就是約束,如果是第一次找到這個 i 除的斷那么就是最大公約數,此時在 if 語句后添加一個 break 直接跳出,那么就保證了此時找到數是最大公約數了。

👸小媛:那是,厲害吧,完整代碼在下面。

#include<stdio.h>
int main()
{int a,b,i;printf("請輸入兩個數,并且使用空格間隔:");scanf("%d%d", &a, &b);if(a==b){printf("\n 兩個數不能相等");return 0;}if(a>b){i=b;}else{i=a;}for(; i>0; i--){if(a%i==0 && b%i==0){printf("最大公約數是:%d\n", i);break;}}return 0;
}

🐰小C:那我們舉一反三吧,最小公約數怎么求呢?

👸小媛:那就反過來,從 1 開始往上加,但是不能超過 a 數與 b 數中最小的那個數,此時找到了就輸出,并且直接使用 break 進行跳出,那么肯定就是最小公約數了;或者還有一種少改動的方法,就是不用 break,新建一個變量,反正每次有約數就覆蓋掉之前的元素,這樣處理到最后一個肯定就是最小約數了,但是還有一個條件不能等于1,代碼寫出來了。 😎

#include<stdio.h>
int main()
{int a,b,i,min=0;printf("請輸入兩個數,并且使用空格間隔:");scanf("%d%d", &a, &b);if(a==b){printf("\n 兩個數不能相等");return 0;}if(a>b){i=b;}else{i=a;}for(; i>0; i--){if(a%i==0 && b%i==0){if(i!=1){min=i;}}}printf("最小公約數是:%d\n", min);return 0;
}

🐰小C:行吧行吧,雖然效率不行但是你的腦子可以。

👸小媛:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。 👍

本專欄已參加 CSDN 蓄力計劃,感謝讀者支持。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287101.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287101.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287101.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何為微服務選擇正確的消息隊列

微服務及消息隊列簡史自從 Peter Rodgers 博士 2005 年在 Web Services Edge 會議上首次提出 Micro-Web-Services 一詞后&#xff0c;IT 行業慢慢地從單體架構轉向了微服務。2009 年&#xff0c;Netflix 決定把其單體架構拆分為微服務。2010 年&#xff0c;Best Buy 開始把它們…

Android之解決PC瀏覽器訪問手機服務端取assets目錄下的文件頁面顯示不出來問題

1 問題 我在手機里面寫了Java socket服務,然后把前端的圖片和css和js的文件放到了安卓項目的 assets目錄,然后瀏覽器訪問服務,我會把 assets目錄下的文件讀出來,然后用DataOutputStream流寫入瀏覽器,但是發現頁面顯示不出來 2 分析原因 我的代碼如下 public void sendHt…

【小白必懂】C語言回文數判斷

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 情景再現 &#x1f478;小媛&#xff1a;小C&#xff0c;今天可以教我…

Android圖片上倒計時,Android自定義照相機倒計時拍照

自定義拍照會用到SurfaceView控件顯示照片的預覽區域&#xff0c;以下是布局文件&#xff1a;兩個TextView是用來顯示提示信息和倒計時的秒數的xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height&qu…

【經典回放】多種語言系列數據結構算法:樹(C#、JavaScript、VB6版)

目 錄 一、樹的C#語言實現以及顯示 二、樹的JavaScript語言實現以及顯示 三、樹的VB6語言實現以及顯示 一、樹的C#語言實現以及顯示 1

『技術群里聊些啥』查看 dotnet 源碼,用它!用它!用它!

前言有網友在交流群中詢問&#xff0c;怎么找到 System.Linq 源碼的庫&#xff1a;其實&#xff0c;我一直使用http://source.dot.net查看 dotnet 源碼&#xff0c;這可是David Fowler&#xff08;微軟 .NET 架構師&#xff09;也推薦的&#xff1a;功能演示那它到底有哪些功能…

Android之解決PC瀏覽器上傳表單文件到手機服務器read數據錯誤導致有時候下載到手機的文件打開文字錯亂問題

1 、問題 手機客戶端app通過java socket寫了一個服務器,然后PC端通過瀏覽器訪問服務端顯示上傳頁面(這些資源都在手機端),然后其中有一個功能是PC端上傳文件到手機服務器,然后把這個文件下載到手機本地,但是我有時候PC上傳的文件打文字會錯亂。 2、http的表單文件上傳文…

javadoc注釋規范

javadoc注釋規范 javadoc做注釋 一. Java 文檔 // 注釋一行 /* ...... */ 注釋若干行 /** ...... */ 注釋若干行&#xff0c;并寫入 javadoc 文檔 通常這種注釋的多行寫法如下&#xff1a; /** * ......... * ......... */ javadoc -d 文檔存放目錄 -author -version 源文件名.…

(7)3分鐘搞定 C# 邏輯運算

本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新&#xff0c;包括別的語言以及實戰都將使用對話的方式進行教學&#xff0c;基礎編程語言教學適用于零基礎小白&#xff0c;之后實戰課程也將會逐步更新。 若…

【經典回放】多種語言系列數據結構算法:二叉樹(C#版)

實驗任務描述 1 用C#語言完成二叉樹的類、并構造出一個二叉樹; 2 用遞歸方法完成二叉樹的遍歷; 3 泛型的二叉樹遍歷之一、用隊列給出遍歷結果 4 泛型的二叉樹遍歷之二、委托方式給出二叉樹遍歷結果 1 二叉樹類的設計 同C語言一樣,要構建一個二叉樹,要用到類似struct的東西…

ThinkPHP講解(十二)——文本編輯器和ajax傳址

一、文本編輯器 1.首先&#xff0c;在網上下載ueditor文件 2.在要添加文本編輯器的頁面中引用ueditor文件中的js文件 <script type"text/javascript" charset"utf-8" src"../ueditor/utf8-php/ueditor.config.js"></script> <scr…

(8)小白又如何?3分鐘搞定一個 C# 知識點

本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新&#xff0c;包括別的語言以及實戰都將使用對話的方式進行教學&#xff0c;基礎編程語言教學適用于零基礎小白&#xff0c;之后實戰課程也將會逐步更新。 若…

Android之解決PC端上傳http表單格式文件手機解析文件名亂碼問題和PC瀏覽器下載文件的文件名顯示亂碼問題

1 問題 問題1、 手機寫socket作為服務器,PC瀏覽器上傳http表單格式文件,然后手機端解析攜帶中文的文件名我解析是亂碼。 問題2、 手機寫了socket作為服務器,PC瀏覽器下載文件,但是瀏覽器里面的文件名有中文的時候會有亂碼。 2 分析 問題1分析 User-Agent: PostmanRun…

華為鴻蒙vogtloop30pro價格,華為Mate30系列基本確認:首發麒麟985+鴻蒙系統,價格感人!...

原標題&#xff1a;華為Mate30系列基本確認&#xff1a;首發麒麟985鴻蒙系統&#xff0c;價格感人&#xff01;轉眼間即將步入6月份&#xff0c;近期關于各大廠商下半年的新機消息也是多了起來&#xff0c;就拿華為下半年的高端旗艦華為Mate30系列來說&#xff0c;在各方媒體的…

[不一樣的依賴注入]容器與服務周期的結合

微信公眾號&#xff1a;趣編程ACE關注可了解更多的.Net日常開發技巧&#xff0c;如需源碼請后臺留言 源碼;如果覺得本公眾號對您有幫助&#xff0c;歡迎關注前文回顧[不一樣的依賴注入]通過遞歸實現容器里依賴注入不一樣的依賴注入 創建周期的加入首先創建一個依賴提供類&#…

(11)python里面while到底有多少知識點

本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新&#xff0c;包括別的語言以及實戰都將使用對話的方式進行教學&#xff0c;基礎編程語言教學適用于零基礎小白&#xff0c;之后實戰課程也將會逐步更新。 若…

【經典回放】多種語言系列數據結構算法:二叉樹(JavaScript版)

1 二叉樹類的設計以及二叉樹遍歷 要完成二叉樹的類設計&#xff0c;最好把鏈表下的Node.js復制過來&#xff0c;相比鏈表的結點&#xff0c;二叉樹僅僅是多了一個結點指針而已。略加修改后&#xff0c;就是&#xff1a; function TNODE(DATA) { this.DataDATA; this.lChildnu…

Fiddler之解決https鏈接返回數據顯示亂碼問題

1 、問題 我網頁訪問淘寶&#xff0c;然后F12查看關鍵鏈接&#xff0c;返回的數據里面有json各式的數據&#xff0c;然后我通過關鍵字在Fiddler里面找到鏈接&#xff0c;然后查看返回的內容是亂碼。 2 、解決辦法 然后這樣設置&#xff0c;再去查看SyntaxView或者Raw都可以看到…

android上傳圖片被旋轉,input上傳照片旋轉解決辦法

需求很簡單&#xff1a;h5拍照上傳照片&#xff0c;然后顯示出來問題在&#xff1a;上傳之后的圖片在PC&#xff0c;IOS端均能正常顯示&#xff0c;Android端顯示的則是被旋轉90度的。直接上代碼下面這個方法傳入file對象&#xff0c;然后會去除掉照片中的exIf信息&#xff0c;…

(12)python 的列表我從沒想過會那么好用

本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新&#xff0c;包括別的語言以及實戰都將使用對話的方式進行教學&#xff0c;基礎編程語言教學適用于零基礎小白&#xff0c;之后實戰課程也將會逐步更新。 若…