C語(yǔ)言 如何求兩整數(shù)的最大公約數(shù)與最小公倍數(shù)
題目
用一函數(shù)求最大公約數(shù),用另一函數(shù)調(diào)用此函數(shù)求出最大公約數(shù),并用求出的最大公約數(shù)求最小公倍數(shù)。
具體要求如下:
- ①用全局變量。將最大公約數(shù)與最小公倍數(shù)設(shè)為全局變量,在主函數(shù)中輸出它們的值。
- ②不用全局變量。最大公約數(shù)和最小公倍數(shù)由被調(diào)模塊返回值。
思路
從兩個(gè)數(shù)中選一個(gè)數(shù),從這個(gè)數(shù)開(kāi)始,逐步減一,當(dāng)能夠同時(shí)被兩個(gè)數(shù)整除時(shí),結(jié)束循環(huán),即為最大公約數(shù)。
最小公倍數(shù)*最大公約數(shù)=兩個(gè)數(shù)乘積。
代碼
法一
#include<stdio.h> int main() { int x,y,z,a,b,c,d,t,x_0,y_0; printf("請(qǐng)輸入兩個(gè)整數(shù):"); scanf("%d,%d",&x,&y); x_0=x;y_0=y; if(x<y) t=x,x=y,y=t; do { a=x%y; if(a!=0) x=y,y=a,a=x%y; }while(x%y!=0); printf("這兩個(gè)整數(shù)的最大公約數(shù)為:%d\n",y); c=x_0/y;d=y_0/y; z=y*c*d; printf("這兩個(gè)整數(shù)的最小公倍數(shù)為:%d\n",z); return 0; }
法二(局部變量)
#include<stdio.h> int yue(int a,int b) { int i,s,max_yue; for(i=a;i>0;i--) if(a%i==0&&b%i==0) {max_yue=i;break;} return(max_yue); } int bei(int a,int b) { int yue(int a,int b); int max_bei; max_bei=a*b/yue(a,b); return(max_bei); } int main() { int a,b,t,max_yue,max_bei; int yue(int a,int b); int bei(int a,int b); printf("請(qǐng)輸入兩個(gè)正整數(shù):"); scanf("%d,%d",&a,&b); if(a<b) {t=a;a=b;b=t;} max_yue=yue(a,b); max_bei=bei(a,b); printf("這兩個(gè)數(shù)最大公約數(shù)為:%d\n最小公倍數(shù)為:%d\n",max_yue,max_bei); }
法三(全局變量)
#include<stdio.h> int max_yue,max_bei; int yue(int a,int b) { int i; for(i=a;i>0;i--) if(a%i==0&&b%i==0) {max_yue=i;break;} return(max_yue); } int bei(int a,int b) { int yue(int a,int b); max_bei=a*b/yue(a,b); return(max_bei); } int main() { int a,b,t; int yue(int a,int b); int bei(int a,int b); printf("請(qǐng)輸入兩個(gè)正整數(shù):"); scanf("%d,%d",&a,&b); if(a<b) {t=a;a=b;b=t;} max_yue=yue(a,b); max_bei=bei(a,b); printf("這兩個(gè)數(shù)最大公約數(shù)為:%d\n最小公倍數(shù)為:%d\n",max_yue,max_bei); }
運(yùn)行結(jié)果
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Visual Studio 2019安裝使用C語(yǔ)言程序(VS2019 C語(yǔ)言)
這篇文章主要介紹了Visual Studio 2019安裝使用C語(yǔ)言程序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03C++ normal_distribution高斯正態(tài)分布函數(shù)的用法示例
高斯分布也稱為正態(tài)分布(normal distribution),常用的成熟的生成高斯分布隨機(jī)數(shù)序列的方法由Marsaglia和Bray在1964年提出,這篇文章主要給大家介紹了關(guān)于C++ normal_distribution高斯正態(tài)分布函數(shù)用法的相關(guān)資料,需要的朋友可以參考下2021-07-07C語(yǔ)言中settimeofday函數(shù)和gettimeofday函數(shù)的使用
這篇文章主要介紹了C語(yǔ)言中的settimeofday函數(shù)和gettimeofday函數(shù)的使用,注意settimeofday()函數(shù)只返回0和-1,需要的朋友可以參考下2015-08-08C++輕量級(jí)界面開(kāi)發(fā)框架ImGUI介紹小結(jié)
如果從事過(guò)C++?Windows客戶端開(kāi)發(fā),大家對(duì)MFC、Qt、DuiLib等各種DirectUI應(yīng)該有了解,本篇給大家介紹一個(gè)超級(jí)輕量級(jí)的C++開(kāi)源跨平臺(tái)圖形界面框架ImGUI,感興趣的可以了解一下2021-11-11C語(yǔ)言的abs()函數(shù)和div()函數(shù)你了解嗎
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的abs()函數(shù)和div()函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-02-02C語(yǔ)言實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03