‘壹’ 怎么用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;//此函数将辗转相除的过程以递归的形式呈现,简化程序属于常规套路。
}