C語言求兩個數的公約數
㈠ 怎麼用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語言求2個數的公約數
#include<stdio.h>
void yue(int a,int b)
{
int i,x;
for(i=1;i<=a&&i<=b;i++)
if(a%i==0&&b%i==0)
x=i; //這里是把i作為公約數,不停的算下去,吧最大的公約數賦值給x
if(x==1)//x==1
printf("a and b have no yue\n"); //;1好像不是公約數吧
else
printf("The yue is %d\n",x);
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
yue(a,b);
return 0;
}
㈢ c語言求兩個數的所有公約數和最大公約數
#include "stdio.h"
void main()
{
unsigned int a,b;
unsigned int i;
unsigned int max=1;
printf("請輸入2個整數:");
scanf("%d%d",&a,&b);
printf("%d%和%d的公約數有:",a,b);
for(i=2;i<((a>b)?a:b);i++)
{
if((a%i==0)&&(b%i==0))
{
max = i;
printf("%d ",i);
}
}
printf("\n最大公約數為:%d\n",max);
}
㈣ 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語言求兩個數的最大公約數和最小公倍數
你可以編寫一個程序,實現輾轉相除法(歐幾里得演算法),來求得最大公約數,然後用兩個數相乘再除以最大公約數來,得到最小公倍數。
#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語言求兩個數的最大公約數
求兩個數的最大公約數就是用短除法求出這兩個數的公因數,最大公因數就是這兩個數的最大公約數。
㈦ C語言編程中,求兩個數的最大公約數和最小公倍數演算法是怎樣的
#include
main()
{
int
m,n,r;
printf("請輸入兩個數字:");
scanf("%d%d",&m,&n);
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
printf("兩個數字的最大公約數為%d\n",n);
getch();
}
這個演算法就是把你初中算最大公約數的過程給程序化了。。你用以前的方法在紙上算算最大公約數
再對照WHILE裡面的演算法
就能明白咋回事了。。
㈧ c語言求兩個數最大公約數
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
printf("輸入兩個數求最大公約數:");
scanf("%d%d",&a,&b);
while(a!=b)
{
if(a>b)
a = a - b;
if(a<b)
b = b - a;
}
printf("%d\n",a);
return 0;
}
㈨ 如何用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 ",a);
printf("%d ",c);
}
return 0;
}
運行效果:
2、輾轉相除法:
#include<stdio.h>
int a,b,temp;
int Division(){
printf("請輸入兩個數(a,b): ");
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 ",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 ",c);
printf("%d ",d);
}
return 0;
}
㈩ c語言中如何求兩個數的最大公約數和最小公倍數
直接編寫兩個函數就行了!!
#include<stdio.h>
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);
}
}