编程一个C语言程序,输入两个数,采用辗转相除法来计算最大公约数
可以参考下面的代码:
#include <stdio.h>
int main()
{
int m, n, r;
scanf ("%d%d", &m, &n);
if (m>n){r=m, m=n, n=r;}
r=n%m;
while (r!=0){
n = m;
m = r;
r = n%m;
}
printf ("%d\n", m);
return 0;
}
扩展资料:
函数 scanf() 是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。
参考资料来源:百度百科-scanf (计算机语言函数)
参考资料来源:百度百科-while (循环语句及英文单词)
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inta,b,r;
scanf("%d%d",&a,&b);
while(b!=0)//当其中一个数为0,另一个数就是两数的最大公约数
{
r=a%b;
a=b;
b=r;
}
printf("最大公约数%d\n",a);
system("pause");
}
扩展资料
C语言求两个数的最大公约数辗转相减法
#include<stdio.h>
intmain()
{
inta=0;//a、b都是某个数的整数倍
intb=0;
printf("pleaseEnter2datas:");
scanf("%d%d",&a,&b);
while(a*b!=0),//a或者b不能为0
{
if(a>b)
{
a=a%b;//将余数赋给最大值,其余数某个数的整数倍
}
else
{
b=b%a;
}
printf("%d\n",a=0?b:a);
return0;
}
}
int maxGY(int a,int b)//返回最大公约数的函数
{
int temp;
if(a<b){ temp=a;a=b;b=temp;}//确保a不小于b,即a-b>0
//辗转相除法,就是两个数中,大减小,大的丢弃,取小的和差,直到小的和差相等为止
//比如:6和9;
//9-6=3;6-3=3此时3=3所以最大公约数是3
while(a!=b)
{
a=a-b;
if(a<b){ temp=a;a=b;b=temp;}
}
return b;
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d",maxGY(a,b));
return 0;
}
#include <stdio.h>
int main()
{
int m, n, r;
scanf ("%d%d", &m, &n);
if (m>n){r=m, m=n, n=r;}
r=n%m;
while (r!=0){
n = m;
m = r;
r = n%m;
}
printf ("%d\n", m);
return 0;
}
又怎么通过调用计算最大公约数函数实现求最小公倍数。
#include <stdio.h>
int gcd(int m, int n)
{
int r;
if (m>n){r=m,m=n,n=r;}
r=n%m;
while (r!=0){
n=m;
m=r;
r=n%m;
}
return m;
}
int main()
{
int m, n, r;
scanf ("%d%d", &m, &n);
printf ("%d\n", gcd(m,n));
return 0;
}
int main()
{int m,n,a,b,c,r;
printf("输入两个整数:\n");
scanf("%d%d",&m,&n);
a=m;
b=n;
if (a>b)
{
r=a;
a=b;
b=r;
}
r=a%b;
while (r!=0)
{
b=a;
a=r;
r=a%b;
}
c=m*n/b;
printf("最大公约数是:%d\n",b);
printf("最小公倍数是:%d\n",c);
return 0;
}