當前位置:首頁 » 編程語言 » c語言求最大公約數最小公倍數

c語言求最大公約數最小公倍數

發布時間: 2022-09-21 12:25:27

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;

}

(1)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

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);

}}

(2)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 gcm(int m,int n)
{
int r,t;
if(m<n){
t=m;
m=n;
n=t;
}
r=m%n;
while(r!=0){// 你這里是一個if 把它換成while 要循環到r等於0
m=n;
n=r;
r=m%n;
}
if(r==0)
return n;
}

int lcm(int m,int n,int p)
{
int q;
q=m*n/p;
return q;
}

main(){
int a,b,p,q;
printf("Input two numbers:\n");
scanf("%d%d",&a,&b);
p=gcm(a,b);
q=lcm(a,b,p);
printf("最大公約數=%d\n",p);
printf("最小公倍數=%d\n",q);
}

❹ C語言,求最大公約數和最小公倍數

求最大公約數最方便的辦法是使用輾轉相除法。在C語言中可以使用條件循環語句來實現。

❺ c語言函數調用求最大公約數和最小公倍數

#include&lt;stdio.h&gt;

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&lt;y)

{

e=x;

x=y;

y=e;

}

while((e=x%y)!=0)

{

x=y;

y=e;

}

return(y);

}

總結:while循環是先判斷後循環 ,而do–while循環是先循環後判斷。

網路——while(循環語句及英文單詞)

❻ C語言最大公約數最小公倍數

無用,if語句判斷邏輯也不妥,改如下較好——

intmain(void){
intx,num1,num2,temp;
while(1){
printf("請輸入兩個數,中間用英文逗號: ");
if(scanf("%d,%d",&num1,&num2),num1>0&&num2>0){
x=num1*num2;
break;
}
printf("輸入錯誤,重新輸入:");
}
while(num2!=0){
temp=num1%num2;
num1=num2;
num2=temp;
}
printf("最大公約數:%d ",num1);
printf("最小公倍數:%d ",x/num1);
return0;
}

❼ 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);

}

(7)c語言求最大公約數最小公倍數擴展閱讀

演算法思想

利用格式輸入語句將輸入的兩個數分別賦給 a 和 b,然後判斷 a 和 b 的關系,如果 a 小於 b,則利用中間變數 t 將其互換。

再利用輾轉相除法求出最大公約數,進而求出最小公倍數。最後用格式輸出語句將其輸出。

#include<stdio.h>是在程序編譯之前要處理的內容,稱為編譯預處理命令。編譯預處理命令還有很多,它們都以「#」開頭,並且不用分號結尾,所以是c語言的程序語句。

❽ 用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;
}

❿ 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);
}
圖:

熱點內容
博越存儲異常 發布:2025-01-11 01:24:31 瀏覽:916
我的世界還原中國伺服器版圖 發布:2025-01-11 01:18:45 瀏覽:382
pythonopenasfile 發布:2025-01-11 01:17:06 瀏覽:971
hbasejavaapi 發布:2025-01-11 01:11:09 瀏覽:744
我的世界pe版飢餓伺服器 發布:2025-01-11 01:09:39 瀏覽:485
異構資料庫數據同步 發布:2025-01-11 01:09:04 瀏覽:957
c語言三角波 發布:2025-01-11 01:02:11 瀏覽:78
php正則轉義 發布:2025-01-11 01:00:03 瀏覽:691
手拉的箱包上的密碼鎖一般是多少 發布:2025-01-11 00:59:55 瀏覽:8
oppo手機系統更新密碼是多少 發布:2025-01-11 00:56:55 瀏覽:87