當前位置:首頁 » 編程軟體 » 編程求最大公約數和最小公倍數

編程求最大公約數和最小公倍數

發布時間: 2022-04-16 12:50:12

1. 編程實現輸入兩個整數,輸出其最大公約數和最小公倍數。

舉例:輸入兩個正整數m和n,輸出它們的最小公倍數和最大公約數。

代碼:

#include <stdio.h>

int main(void)

{

int gcd, lcm, m, n;

int repeat, ri;

scanf("%d", &repeat);

for(ri = 1; ri <= repeat; ri++)

{

scanf("%d", &m);

scanf("%d", &n);

if(m <= 0 || n <= 0)

{ printf("m <= 0 or n <= 0");

continue;

}

for(gcd=m; gcd >= 1; gcd--){

if(m % gcd == 0 && n % gcd == 0) break;

}

lcm = m * n / gcd;

printf("%d, %d ",lcm, m, n, gcd, m, n);

}

}

運行效果:

輸入輸出示例:括弧內為說明

輸入:

3(repeat=3)

37(m=3,n=7)

244(m=24,n=4)

2418(m=24,n=18)

輸出:

21,1.

24,4.

72,6.

(1)編程求最大公約數和最小公倍數擴展閱讀:

輾轉相除法:

#include <stdio.h>

int main()

{

int m,n;

scanf("%d %d",&a,&b); //輸入兩個整數

int num1,num2,c; //num1,num2作為計算時的變數,c作為中間變數

if(a>=b) {num1=a; num2=b; }

else {num1=b; num2=a; }//通過比較對num1和num2賦值,便於計算

while(num2>0){

c=num1%num2;

num1=num2;

num2=c;}//輾轉相除,num2=0時,num1=最大公因數

printf("最大公因數:%d ",num1);

printf("最小公倍數:%d "m*n/num1);

return 0;

}

2. c語言編程求輸入兩個數的最大公約數和最小公倍數,怎麼做

輸入兩個正整數m和n,求其最大公約數和最小公倍數.用輾轉相除法求最大公約數 演算法描述:m對n求余為a,若a不等於0 則 m 0)
{
m_cup = m;

#include<stdio.h>

voidmain()

{

intm,n,m1,n1,t;

printf("請輸入兩個數(用空格隔開):");

scanf("%d%d",&m,&n);

if(n>m)

{

t=m;

m=n;

n=t;

}

m1=m;

n1=n;

while(n!=0)

{

t=m%n;

m=n;

n=t;

}

printf("%d和%d的最大公約數是:%d ",m1,n1,m);

printf("最小公倍數是:%d ",m1*n1/m);

}

3. 請用C語言編程求兩個數的最大公約數和最小公倍數

一樓的回答不對啊,你求的是最小公約數而不是最小公倍數,兩個整數的最小公約數永遠是1,應該這樣改:
main()
{
int
x,y,a,m,n,t;
printf("please
input
two
num
x,y\n");
scanf("%d,%d",&x,&y);
for(a=x<y?x:y;a>0;a--)
if(x%a==0&&y%a==0)
{
printf("x,y的最大公約數是
%d\n",a);
break;
}
m=x/a;
n=y/a;
t=a*m*n;
printf("x,y的最小公倍數是
%d\n",t);
}

4. c語言編程求最大公約數和最小公倍數

#include<stdio.h>
int
main()
{
int
m,n;
int
divisor,dividend,res;/*除數
被除數
余數*/
scanf("%d%d",&m,&n);
if(m>0&&n>0)
{
if(m>=n)
{
divisor=n;
dividend=m;
}
else
{
divisor=m;
dividend=n;
}
res=dividend%divisor;
while(res!=0)//循環體是三條語句,不加大括弧循環只執行一條語句
{
dividend=divisor;
divisor=res;
res=dividend%divisor;
}
printf("%d",divisor);
}
else
printf("error!\n");
return
0;
}
兩數相乘除以最大公約數就是最小公倍數

5. 編程,求最大公約數和最小公倍數

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

}

(5)編程求最大公約數和最小公倍數擴展閱讀

演算法思想

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

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

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

6. 編程求兩個整數的最大公約數和最小公倍數

#include<stdio.h>

/*最大公約數*/
intGreatestCommonDivisor(intm,intn)
{
intr;
do
{
r=m%n;
m=n;
n=r;
}while(r!=0);
returnm;
}

/*最小公倍數*/
intLeastCommonMultiple(intm,intn)
{
returnm/GreatestCommonDivisor(m,n)*n;
}

intmain(void)
{
intm,n;
printf("請輸入兩個數字:");
scanf("%d%d",&m,&n);
printf("最大公約數是%d。 ",GreatestCommonDivisor(m,n));
printf("最小公倍數是%d。 ",LeastCommonMultiple(m,n));
return0;
}

7. c語言編程最大公約數最小公倍數

while(scanf("%d%d",&m,&n), m<0 || n<0); j=m; while(j/n!=0) //在這層循環中只有一條語句 j=j+m; 當j/n!=0的時候循環語句繼續執行 j=j+m; //接下來我覺得程序有問題,比如說20與25代入程序:20/25=0,直接結束循環,輸出 20,結果明顯錯誤,那下一步求最小公倍數就更是錯的了。 k=(m*n)/j; printf("最小公倍數是%d\n最大公約數是%d\n ",k,j); 第二道題: void main() { int p,r,n,m,temp; printf("請輸入兩個正整數n,m:"); scanf("%d,%d",&n,&m); if (n<m) //此步是將大數字賦值給m {temp=n; n=m; m=temp; } p=n*m; while (m!=0) {r=n%m; //小的數字和大數字取余結果必定是原來的小數字,大和小取余結果相當於減去 小的數 n=m; //這種求公約數原理就是利用求余來減少重復相減的次數,其實也就屬於輾轉相除法 m=r; //輾轉相除法就是對於給定的兩個數,用較大的數除以較小的數,若余數不為零,則將對余數和較小的數構成新的一對數,繼續上面的除法,直到大數被小數除盡,則這時較小的數就是原來兩倍的最大公約數。

8. 用c語言編程輸入兩個整數,求其最大公約數和最小公倍數

#include"stdio.h"
main()
{
intm,n,t,h,a,b,q;
printf("輸入m,n的值:");
scanf("%d%d",&m,&n);
a=m;
b=n;
if(n>m)
{t=m;m=n;n=t;}
while(m%n!=0)
{h=n;n=m%n;m=n;}
a=a/n;b=b/n;q=a*b*n;
printf("兩數最大公約數為%d,最小公倍數為%d ",n,q);
}

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

}}

(9)編程求最大公約數和最小公倍數擴展閱讀

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;//此函數將輾轉相除的過程以遞歸的形式呈現,簡化程序屬於常規套路。

}

10. [C語言]編程:輸入兩個正整數,求其最大公約數和最小公倍數

程序如下:
main(){
int a,b,r,gcd,lcm;
printf("請輸入兩個正整數:");
scanf("%d%d",&a,%b);
while(r=a%b){
a=b;
b=r;
}
gcd=b;
lcm=a*b/gcd;
printf("gcd=%d,lcm=%d\n",gcd,lcm);
}
就是這樣。
有什麼問題請留言。

熱點內容
離線緩存為什麼點不動 發布:2025-05-15 07:27:17 瀏覽:828
釘鼎伺服器出口ip 發布:2025-05-15 07:13:08 瀏覽:279
移動硬碟和光碟哪個存儲時間長 發布:2025-05-15 07:04:25 瀏覽:489
壓縮一定 發布:2025-05-15 06:57:30 瀏覽:289
進棧演算法 發布:2025-05-15 06:56:02 瀏覽:215
安卓和緩存 發布:2025-05-15 06:56:02 瀏覽:428
筆記本電腦台式伺服器 發布:2025-05-15 06:40:41 瀏覽:109
4k無壓縮 發布:2025-05-15 06:02:54 瀏覽:75
hp存儲6350 發布:2025-05-15 05:40:41 瀏覽:233
怎麼更改電腦默認緩存位置 發布:2025-05-15 05:39:01 瀏覽:877