C語言 如何求兩整數(shù)的最大公約數(shù)與最小公倍數(shù)
題目
用一函數(shù)求最大公約數(shù),用另一函數(shù)調(diào)用此函數(shù)求出最大公約數(shù),并用求出的最大公約數(shù)求最小公倍數(shù)。
具體要求如下:
- ①用全局變量。將最大公約數(shù)與最小公倍數(shù)設(shè)為全局變量,在主函數(shù)中輸出它們的值。
- ②不用全局變量。最大公約數(shù)和最小公倍數(shù)由被調(diào)模塊返回值。
思路
從兩個數(shù)中選一個數(shù),從這個數(shù)開始,逐步減一,當(dāng)能夠同時被兩個數(shù)整除時,結(jié)束循環(huán),即為最大公約數(shù)。
最小公倍數(shù)*最大公約數(shù)=兩個數(shù)乘積。
代碼
法一
#include<stdio.h>
int main()
{
int x,y,z,a,b,c,d,t,x_0,y_0;
printf("請輸入兩個整數(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("這兩個整數(shù)的最大公約數(shù)為:%d\n",y);
c=x_0/y;d=y_0/y;
z=y*c*d;
printf("這兩個整數(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("請輸入兩個正整數(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("這兩個數(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("請輸入兩個正整數(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("這兩個數(shù)最大公約數(shù)為:%d\n最小公倍數(shù)為:%d\n",max_yue,max_bei);
}運行結(jié)果

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)之復(fù)雜鏈表的拷貝
復(fù)雜鏈表指的是一個鏈表有若干個結(jié)點,每個結(jié)點有一個數(shù)據(jù)域用于存放數(shù)據(jù),還有兩個指針域,其中一個指向下一個節(jié)點,還有一個隨機指向當(dāng)前復(fù)雜鏈表中的任意一個節(jié)點或者是一個空結(jié)點。今天我們要實現(xiàn)的就是對這樣一個復(fù)雜鏈表復(fù)制產(chǎn)生一個新的復(fù)雜鏈表2021-11-11
C++利用std::forward_list查找插入數(shù)據(jù)方法示例
這篇文章主要給大家介紹了關(guān)于C++利用std::forward_list查找插入數(shù)據(jù)的相關(guān)資料,文中先對std::forward_list進行了詳細的介紹,而后通過示例代碼給大家介紹了查找的方法,需要的朋友可以參考借鑒,下面話不多說了,來一起看看吧。2017-08-08
c++ TCHAR轉(zhuǎn)string導(dǎo)致中文缺失或亂碼問題及解決
這篇文章主要介紹了c++ TCHAR轉(zhuǎn)string導(dǎo)致中文缺失或亂碼問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08

