c語言最小公倍數和最大公約數
Ⅰ c語言如何求最大公約數和最小公倍數
#include <stdio.h>
int main()
{
int a,b,c,m,t;
printf("請輸入兩個數: ");
scanf("%d%d",&a,&b);
if(a<b)
{
t=a;
a=b;
b=t;
}
m=a*b;
c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
printf("最大公約數是: %d ",b);
printf("最小公倍數是: %d ",m/b);
}
(1)c語言最小公倍數和最大公約數擴展閱讀
演算法思想
利用格式輸入語句將輸入的兩個數分別賦給 a 和 b,然後判斷 a 和 b 的關系,如果 a 小於 b,則利用中間變數 t 將其互換。
再利用輾轉相除法求出最大公約數,進而求出最小公倍數。最後用格式輸出語句將其輸出。
#include<stdio.h>是在程序編譯之前要處理的內容,稱為編譯預處理命令。編譯預處理命令還有很多,它們都以「#」開頭,並且不用分號結尾,所以是c語言的程序語句。
Ⅱ c語言編程,求兩個數的最大公約數和最小公倍數
這樣寫:
#include
void
main()
{
int
m,n,i,r,temp;
printf("請輸入第一個數的值:
");
scanf("%d",&m);
printf("請輸入第二個數的值:
");
scanf("%d",&n);
if(n>m)
{
temp=m;
m=n;
n=temp;
}
i=n;
while(i%m!=0)
{
i=i+n;
}
printf("最小公倍數是:%d
\n",i);
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
printf("最大公約數是:%d
\n",n);
}
圖:
Ⅲ C語言函數編寫,求兩個整數的最大公約數和最小公倍數
編寫該程序的整體思路:分別定義最大公約數函數和最小公倍數函數,然後再main函數裡面調用它。C語言實現代碼如下:
#include<stdio.h>
#include<math.h>
intfun_gy(int,int); //聲明最大公約數函數
intfun_gb(int,int); //聲明最小公倍數函數
main()
{
inta,b,gy,gb;
printf("輸入兩個整數: ");
scanf("%d%d",&a,&b);
gy=fun_gy(a,b); //調用最大公約數函數
gb=fun_gb(a,b); //調用最小公倍數函數
printf("最大公約數是:%d 最小公倍數是:%d ",gy,gb);
}
intfun_gy(intx,inty)
{
intz,i;
if(x>y)
z=sqrt(y);
else
z=sqrt(x);
for(i=z;i>=1;i--)
{
if(x%i==0&&y%i==0)
break;
}
returni;
}intfun_gb(intx,inty)
{
intz,i;
z=x*y;
for(i=x;i<=z;i++)
{
if(i%x==0&&i%y==0)
break;
}
returni;
}程序運行結果:
(3)c語言最小公倍數和最大公約數擴展閱讀:
這里涉及到了最大公約數和最小公倍數的計算方法:
我們知道兩個整數的最小公倍數等於他們的乘積除以他們的最大公約數。所以關鍵還是最大公約數的計算。
輾轉相除法(求最大公約數):
假設求a,b的最大公約數,則:
(1)a除以b取余得c,若c=0,則b即為兩數的最大公約數,輸出,結束。
(2)若c != 0,則將b賦給a,c賦給b再返回上一步操作,繼續執行。
例如,求30和98的最大公約數,過程如下:
90%30 = 8;
30%8 = 6;
8%6 = 2;
6%2 = 0;
所以最大公約數為2。
Ⅳ c語言中如何求兩個數的最大公約數和最小公倍數
直接編寫兩個函數就行了!!
#include
int
yueshu(int
m,int
n)
{
int
t;
if(m>n)
t=m,m=n,n=t;
//替換,保證m為較大的數
while(n!=0)
{
t=m%n;
m=n;
n=t;
}
return
m;
}
int
beishu(int
m,int
n)
{
return
m*n/yueshu(m,n);
//最小公倍數即為兩個數的乘積除以最大公約數
}
main()
{
int
m,n,s,t;
while(scanf("%d%d",&m,&n))
{
s=yueshu(m,n);
printf("%d\n",s);
t=beishu(m,n);
printf("%d\n",t);
}
}
Ⅳ c語言編程:輸入兩個正整數,求最大公約數和最小公倍數
#include
voidmain(){
inta,b,n1,n2,t;
while(true)
{
printf("任意輸入兩個正整數: ");
scanf("%d%d",&n1,&n2);
if(n1
{
t=n1;
n1=n2;
n2=t;
}
a=n1;
b=n2;
while(b!=0){/*利用輾除法,直到b為0為止*/
t=a%b;
a=b;
b=t;
}
printf("最大公約數為:%d ",a);
printf("最小公倍數為:%d ",n1*n2/a);
}}
(5)c語言最小公倍數和最大公約數擴展閱讀
C語言求最大公約數輾轉相除法
#include<stdio.h>
intgcd(intm,intn);//將輾轉相除的過程封裝為函數,使主函數結構清晰。
intmain(void)
{
inta,b;
while(~scanf("%d%d",&a,&b)){//多組數據輸入時的方式之一與while(scanf("%d%d",&a,&b)!=EOF)用途相同
printf("%d ",gcd(a,b));
return0;
}
intgcd(intm,intn)
{
returnn?gcd(n,m%n):m;//此函數將輾轉相除的過程以遞歸的形式呈現,簡化程序屬於常規套路。
}
Ⅵ c語言函數調用求最大公約數和最小公倍數
#include<stdio.h>
int a;
int _Y(int x,int y);
int main()
{
int a,b,c,d;
printf(「請輸入數字:」);
scanf("%d,%d",&c,&d);//此處注意在輸出的時候數字之間要打都好,不然輸出結果錯誤
b=_Y(c,d);
a=c*d/b;
printf(「最大公約數為:%d 」,b);
printf(「最小公倍數為:%d 」,a);
return 0;
}
int _Y(int x,int y)
{
int e;
if(x<y)
{
e=x;
x=y;
y=e;
}
while((e=x%y)!=0)
{
x=y;
y=e;
}
return(y);
}
總結:while循環是先判斷後循環 ,而do–while循環是先循環後判斷。
網路——while(循環語句及英文單詞)
Ⅶ C語言求最大公約數和最小公倍數
最大公約數和求最小公倍數
1、對兩個正整數a,b如果能在區間[a,0]或[b,0]內能找到一個整數temp能同時被a和b所整除,則temp即為最大公約數。
2、對兩個正整數a,b,如果若干個a之和或b之和能被b所整除或能被a所整除,則該和數即為所求的最小公倍數。
窮舉法求兩數的最大公約數
int divisor(int a,int b)
{
int temp;//定義義整型變數
temp=(a>b)?b:a;//采種條件運算表達式求出兩個數中的最小值
while(temp>0){
if(a%temp==0&&b%temp==0)//只要找到一個數能同時被a,b所整除,則中止循環
break;
temp--;//如不滿足if條件則變數自減,直到能被a,b所整除
}
return temp;//返回滿足條件的數到主調函數處
}
//窮舉法求兩數的最小公倍數
int multiple(int a,int b)
{
int p,q,temp;
p=(a>b)?a:b;//求兩個數中的最大值
q=(a>b)?b:a;//求兩個數中的最小值
temp=p;//最大值賦給p為變數自增作準備
while(1){//利用循環語句來求滿足條件的數值
if(p%q==0)
break;//只要找到變數的和數能被a或b所整除,則中止循環
p+=temp;//如果條件不滿足則變數自身相加
}
return p;
}
(7)c語言最小公倍數和最大公約數擴展閱讀:
while使用示例
C++
int a=NULL;
while(a<10)
{
a++;//自加
if(a>5)//不等while退出循環,直接判斷循環
{
break;//跳出循環
}
}
結果:結束後a的值為6。
javascript
下面的例子定義了一個循環程序,這個循環程序的參數i的起始值為0。該程序會反復運行,直到i大於10為止。i的步進值為1。
<html>
<body>
<script type="text/javascript">
var i=0
while(i<=10)
{document.write("The number is"+i);
document.write("<br/>");
i=i+1;}
</script>
</body>
</html>
結果
The number is0
The number is1
The number is2
The number is3
The number is4
The number is5
The number is6
The number is7
The number is8
The number is9
The number is10
網路——while
Ⅷ C語言中 用函數調用求最大公約數和最小公倍數
#include<stdio.h>
int gcd(int m, int n);
int lcd(int m, int n);
int main()
{
int a, b;
printf("輸入兩個正整數:");
scanf("%d%d", &a, &b);
printf("%d 和 %d 最大公約數為%d\n", a, b, gcd(a, b));
printf("最小公倍數為:%d\n", lcd(a, b));
}
int gcd(int m, int n)
{
int t;
if (m<n)
{
t = m;
m = n;
n = t;
}
while (n != 0)
{
t = m%n;
m = n;
n = t;
}
return m;
}
int lcd(int m, int n)
{
int t;
t = m*n / gcd(m, n);
return t;
}
Ⅸ 用C語言求兩個數的最大公約數和最小公倍數
你可以編寫一個程序,實現輾轉相除法(歐幾里得演算法),來求得最大公約數,然後用兩個數相乘再除以最大公約數來,得到最小公倍數。
#include
<stdio.h>
int
main()
{
int
a,
b,
c;
//a,
b就是M和N,c是余數
int
ta,
tb;
//用來記錄a,b的臨時值
int
maxgys,mingbs;
printf("請輸入兩個數:
");
scanf("%d%d",&a,&b);
ta
=
a;
tb
=
b;
if(ta
>
tb)
{ta
=
b;
tb
=
a;}
c
=
tb
%
ta;
while(c!=
0)
{
tb
=
ta;
//輾轉相除的過程
ta
=
c;
c
=
tb
%
ta;
}
printf("%d和%d的最大公約數是:
%d\n",
a,
b,
ta);
printf("%d和%d的最小公倍數是:
%d\n",
a,
b,
a
*
b
/
ta);
return
0;
}
Ⅹ 怎麼用C語言編求最大公約數和最小公倍數的程序
就發第一個吧,沒分沒動力...
因為2個題目是有聯系的,向1樓說的那樣
#include
<stdio.h>
main()
{
int
a,b,c,i;
printf("求2個數的最大公約數\n");
printf("輸入兩個數用空格隔開,再回車:\n");
scanf("%d",&a);
scanf("%d",&b);
for(i=1;i<=a||i<=b;i++)
{
if(a%i==0&&b%i==0)
c=i;
}
printf("最大公約數是:%d\n",c);
return
0;
}
補上
#include
<stdio.h>
main()
{
int
a,b,c,i;
printf("求2個數的最小公倍數\n");
printf("輸入兩個數用空格隔開,再回車:\n");
scanf("%d",&a);
scanf("%d",&b);
for(i=1;i<=a||i<=b;i++)
{
if(a%i==0&&b%i==0)
c=i;
}
printf("最小公倍數是:%d\n",a*b/c);
return
0;
}