當前位置:首頁 » 編程語言 » 用c語言寫求兩個數最大公約數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

用c語言寫求兩個數最大公約數

發布時間: 2022-07-11 23:18:29

『壹』 怎麼用c語言編輯出兩個數的最大公約數呀謝謝!!

#include
"stdio.h"
main()
{
int
x=0,y=0;
/*被求公倍數的兩個數*/
int
z
=
0;
/*保存臨時的取余結果*/
int
count
=
3;
/*循環計數*/
int
tmp
=
0;
/*交換x,y的臨時變數
*/
/*循環3次獲得用戶輸入,直到輸入正確,或超過次數*/
while(count
>
0)
{
printf("please
input
two
numbers\n");
if(2
!=
scanf("%d%d",&x,&y))
/*如果正確的輸入參數不等於2
就結束這次循環,並給出錯誤信息*/
{
fflush(stdin);
/*清空輸入緩沖區,否則下次輸入會有錯誤*/
count--;
printf("error:This
figure
must
be
imported
!
you
still
have
%d
opportunities.\n",count);
}
else
if(
x
==
0
||
y
==
0)
{
count--;
printf("error:The
input
not
equal
to
0!
you
still
have
%d
opportunities.\n",count);
}else
break;
}
/*如果輸入次數超過限制,則退出程序並給出提示*/
if(count
<=
0)
{
printf("You
have
no
chance
of
withdrawal
proceres
");
return;
}
/*將兩個數的大小位置固定,x永遠大於y
方便下面判斷*/
if(x
<
y)
{
tmp
=
x;
x
=
y;
y
=
tmp;
}
/*用輾轉相除法求出最大公倍數*/
while(
x
%
y
!=
0)
{
printf("%d\t/\t%d\tremainder\t%d\n",x,y,(x
%
y));
/*輸出求解過程*/
z
=
x
%
y;
x
=
y;
y
=
z;
}
printf("%d\t/\t%d\tremainder\t%d\n",x,y,(x
%
y));
/*輸出最後一次求解過程*/
printf("the
result
is
%d\n",y);
}

『貳』 用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語言程序:求兩個數的最大公約數和最小公倍數。

#include<iostream>
using
namespace
std;
int
f(int
p,int
q);
int
g(int
u,int
v,int
w);
int
main()
{
int
x,y,m,n;
cout<<"請輸入兩個整數"<<endl;

cin>>x>>y;

m=f(x,y);
n=g(x,y,m);
cout<<"這兩個數的最大公約數是"<<m<<"\n這兩個數的最小公倍數是"<<n<<endl;
}
int
f(int
p,int
q)
{

int
r;

p>q?r=q:r=p;
//找兩個數中最小的最小的

for(;p%r!=0||q%r!=0;r--);

return
r;
}
int
g(int
u,int
v,int
w)
//w是最大公約數
{

int
g;

g=u*v/w;
return
g;
}

『肆』 如何用C語言求兩個數的最大公約數的三種演算法

1、相減法
#include<stdio.h>
int
main()
{
int
a,b;
int
c=0;//計數器
while(1)//循環判斷的作用
{
printf("輸入兩個數字求最大公約數:");
scanf("%d%d",&a,&b);
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
c++;
}
printf("最大公約數是:%d\n",a);
printf("%d\n",c);
}
return
0;
}
運行效果:

2、輾轉相除法:
#include<stdio.h>
int
a,b,temp;
int
Division(){
printf("請輸入兩個數(a,b):\n");
scanf("%d,%d",&a,&b);
if(a<b){
temp=a;
a=b;
b=temp;
}
while(a%b!=0){
temp=a%b;
a=b;
b=temp;
}
printf("最大公約數為:%d\n",b);
return
0;
}
3、窮舉法
#include<stdio.h>
int
main()
{
int
a,b,c;
int
d=0;//計數器
while(1)
{
printf("輸入兩個數字求最大公約數:");
scanf("%d%d",&a,&b);
c=(a>b)?b:a;//三目運算符
while(a%c!=0||b%c!=0)
{
c--;
d++;
}
printf("最大公約數是:%d\n",c);
printf("%d\n",d);
}
return
0;
}

『伍』 c語言程序編寫:計算兩個數的最大公約數

#include<stdio.h>
#include <conio.h>

void main()
{
int m,n,k;
while (1)
{
printf("輸入m和n(m>n):");
scanf("%d %d",&m,&n);
if(m<n)
printf("輸入錯誤,請重新輸入\n");
else break;
}
while (1)
{
k=m%n;
if(k==0)
break;
m=n;
n=k;
}
printf("m和n的最大公約數是:%d",n);
getch();
}

『陸』 C語言 求兩個數的最大公約數

本題使用輾轉相除法:
兩數a,b, 取余數n=a%b, 若n!=0,則使a=b,b=n,n=a%b,
重復上述過程,直到n為0為止,此時b為最大公約數.
若不理解,使用兩個整數(如48,32)試一下即可.
第1空,b=m; //這是交換a,b,總是讓a<b
第2空,n=j%i //取余數
第3空,i=n

『柒』 c語言求兩個數的最大公約數

思路:求兩個數的最大公約數使用輾轉相除法。
輾轉相除法,
又名歐幾里德演算法(Euclidean
algorithm)乃求兩個正整數之最大公因子的演算法。原理:兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。
參考代碼:
#include <stdio.h>
int main()
{
int x,y,z;
scanf("%d%d",&x,&y);
while(x!=0)
{
z=x%y;
x=y;
y=z;
}
printf("%d\n",z);
return 0;
}
/*
運行結果:
6 27
3
*/

『捌』 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);

}}

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

}