gcd函数求公约数c语言 c语言求公约数使用函数

c语言程序设计 求最大公约数#include stdio.h
int gcd(int a,int b);
int main(){
int a,b;
for(;;){
scanf("%d %d",a,b);
if(a==0b==0){
return 0;
}
if(a0||b0||a=10000||b=10000){
return 0;
}
printf("%d \n",gcd(a,b));
}
return 0;
}
int gcd(int a,int b){
if(a==0){
return b;
}else if(b==0){
return a;
}else{
int i=ab?b:a;
while(a%i!=0||b%i!=0){
i--;
}
return i;
}
}
C语言中 用函数调用求最大公约数和最小公倍数#includestdio.h
int gcd(int m, int n);
int lcd(int m, int n);
int main()
{
int a, b;
printf("输入两个正整数:");
scanf("%d%d", a, b);
printf("%d 和 %d 最大公约数为%d\n", a, b, gcd(a, b));
printf("最小公倍数为:%d\n", lcd(a, b));
}
int gcd(int m, int n)
{
int t;
if (mn)
{
t = m;
m = n;
n = t;
}
while (n != 0)
{
t = m%n;
m = n;
n = t;
}
return m;
}
int lcd(int m, int n)
{
int t;
t = m*n / gcd(m, n);
return t;
}
编写一个c语言程序 求两个整数的最大公约数下面给出一个使用C语言实现求两个整数的最大公约数的示例代码:
```c
#include stdio.h
int gcd(int a, int b);
int main() {
int a, b, result;
printf("请输入两个整数:");
scanf("%d %d", a, b);
result = gcd(a, b);
printf("两个数的最大公约数为:%d", result);
return 0;
}
int gcd(int a, int b) {
if (a % b == 0) {
return b;
}
return gcd(b, a % b);
}
```
在上面的代码中,我们定义了一个`gcd`函数来求两个整数的最大公约数 。`gcd`函数使用递归方式来实现辗转相除法求最大公约数 。如果a能被b整除,则b就是两个整数的最大公约数 。否则,我们就不断将b作为a , 将a%b作为b , 不断递归求解,直到b能够整除a 。
在主函数中,我们首先使用`scanf`函数来读入两个整数 , 然后用`gcd`函数来求它们的最大公约数 , 最后输出结果 。
需要注意的是,上面的代码中没有对输入的数据进行异常处理 。如果用户输入的不是整数类型,程序可能会出现错误 。因此,为了保证程序的健壮性,我们还需要添加一些异常处理代码来防止这种情况发生 。
c语言求最大公约数代码c语言求最大公约数代码:
#includestdio.h
#includewindows.h
#pragma warning(disable:4996)//因为是vs编译器,不承认scanf函数,其他编译器可忽略
int gcd(int i, int j)
{
int a;
if (ij)//交换变量值
{
a = i;
i = j;
j = a;
}
while (j != 0){
a = i % j;
i = j;
j = a;
}
return i;
}
int main()
{
int x;
int y;
scanf("%d %d", x, y);
int c = gcd(x, y);
printf("%d\n", c );
system("pause");
return 0;
}
解题分析:
极大公数,也称最大公约数、最大公因子,指两个或更多的整数共有约数中最大的一个;最小公倍数是指两个或多个整数共同拥有的倍数 , 称为它们的公倍数 , 而除0以外的最小公倍数称为两个整数的最小公倍数 。最小公倍=两整数的乘积=最大公约数,因此如何确定最大公约数是关键 。
由于2将 b=r1q2改为 b=r1q2,则b1r1的公约数必须是a1b公约数 。因为一个数可以同时除 b和r1之外,那么就必须能够整除 a,因此,对于a1b,也就是 a的公约数 。相反,如果一个数 d,能够同时整除a1b,则由1)式,就一定能整除r1 , 因此,它的公约数 d是b1r1 。

推荐阅读