计算两个正整数的最大公约数c语言

作者&投稿:屈勤 (若有异议请与网页底部的电邮联系)
~

以下是一个使用C语言计算两个正整数的最大公约数的示例代码:

c复制代码

#include<stdio.h>

int gcd(int a, int b){

if(b==0){

return a; 

}else{

return gcd(b, a % b);

}

}

int main() {

int num1, num2, result;

printf("请输入两个正整数:");

scanf("%d %d", &num1, &num2);

result = gcd(num1, num2);

printf("最大公约数为:%d
", result);

return 0;

}

计算两个正整数的最大公约数(Greatest Common Divisor,简称GCD)是数学中的一个经典问题。在C语言中,可以使用欧几里得算法(也称为辗转相除法)来计算两个数的最大公约数。

在上述代码中,我们定义了一个名为gcd的函数来计算最大公约数。该函数使用递归的方式实现欧几里得算法。具体来说,如果第二个参数为0,则返回第一个参数;

否则,递归调用gcd函数,并将第二个参数和第一个参数模第二个参数的结果作为新的参数传递给递归函数。递归将一直进行,直到第二个参数为0为止。

在main函数中,我们首先从用户输入中获取两个正整数,并将它们传递给gcd函数来计算它们的最大公约数。最后,我们将结果打印到控制台上。

需要注意的是,上述代码假设输入的两个数都是正整数。如果需要对输入进行错误检查,可以在代码中添加适当的条件语句。




如何找最大公因数?
求两个整数最大公约数主要的方法:穷举法:分别列出两整数的所有约数,并找出最大的公约数。素因数分解:分别列出两数的素因数分解式,并计算共同项的乘积。短除法:两数除以其公同素因数,直到两数互素时,所有除数的乘积即为最大公约数。辗转相除法:两数相除,取余数重复进行相除,直到余数为0时,...

c语言编程:输入两个正整数,求最大公约数和最小公倍数
include<stdio.h> int main(){ int p,r,n,m,temp;printf("请输入两个正整数n,m:");scanf("%d,%d,",&n,&m);if(n<m){ temp=n;n=m;m=temp;} p=n*m;while(m!=0){ r=n%m;n=m;m=r;} printf("它们的最大公约数为:%d\\n",n);printf("它们的最小公约数为:%d\\n",p\/...

[C语言]编程:输入两个正整数,求其最大公约数和最小公倍数
include<stdio.h> int main(){ int m, n;int gcd, lcm;scanf("%d%d", &m, &n);gcd = m < n ? m : n;lcm = m > n ? m : n;do { if(m % gcd == 0 && n%gcd==0)break;gcd--;}while(1);do { if(lcm % m == 0 && lcm % n==0)break;lcm++;}while(1)...

在c语言中输入两个正整数m和n,求其最大公约数和最小倍数
include <stdio.h> include <windows.h> int main(){ int num1, num2, t, p;printf("请输入两个正整数:");scanf_s("%d,%d", &num1, &num2);p = num1*num2;while (t = num1%num2){ num1 = num2;num2 = t;} p = p \/ num2;printf("它们的最大公约数:%d\\n", num...

java:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利 ...
程序运行截图:辗除法——辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。代码:public class Test {public static final void main(String[] args) {System.out.println("请输入两个正整数");System.out.print("第一个正整数:");Scanner scanner = new ...

C语言编写程序计算两个正整数的最大公约数
DEV-CPP 5.4 C语言环境,通过编译运行 include<stdio.h>int max(int a,int b){ \/\/求最大公约数的函数 int i,k; for(i=1;i<=(a>b?b:a);i++) if(a%i==0&&b%i==0) k=i; return k;}int main(){ int a,b; scanf("%d%d",&a,&b); print...

程序设计,两个正整数的最大公约数(Greatest Common Divisou,GCD)是能 ...
具体代码如下:(附有注释)include <stdio.h>#include<stdlib.h>#include<math.h> int Gcd( int a ,int b ); main(){int a,b; \/\/储存两个数int g; \/\/接收最大公约数printf("Input a,b:");scanf("%d,%d",&a,&b);g=Gcd(a,b);\/\/增强程序健壮性if(g==-1)printf("Input...

编写程序:输入两个正整数m和n,计算它们的最大公约数和最小公倍数。
include<iostream> using namespace std ;\/\/最大公约数-Greatest Common Divisor int gcd(int m, int n){ return n == 0 ? m : gcd(n, m % n) ;} \/\/最小公倍数-Least Common Multiple int lcm(int m, int n){ return m * n \/ gcd(m, n) ;} int main(void){ int m ;c...

c语言求两个正整数的最大公约数
求最大公约数的方法有很多。最常用的有如下两种:1 根据数学定义,可同时整除两个操作数的最大整数,就是最大公约数:int gcd(int m, int n)\/\/求n和m的最大公约数{ int min = m>n?n:m; \/\/两个数的较小者。 while(min > 0) { if(m%min == 0 && n%min == 0) ...

设计算法要求输入两个正整数,输出他们的最大公因数和最小公倍数,画出...
我们用“辗转相除”的方法来求最大公约数:假设输入为a,b 1.任何时候如果b > a,那么交换a,b(保证a比b大,这么做结果是不会变的)2.如果b = 0,那么此时的a就是我们想要的最大公约数;如果b > 0,那么对a,b重新赋值,令b = a mod b, a = b 3.重复步骤2,直到b=0为止 举个例子...

巴州区18695779402: 用c语言写出一个求两个正整数的最大公约数的函数 -
野堂利欧: int GC(int a,int b) { int r; if(a<b) { r=a; a=b; b=r; } r=a%b; while(r) {a=b;b=r;r=a%b;}//辗转相除 return b;//返回b,即为两者最大公约数 }

巴州区18695779402: C语言:求两数的最大公约数 -
野堂利欧: /*最大公约数*/ #include <stdio.h> main() { int a,b,c,i; printf("input two number"); scanf("%d,%d",&a,&b); if(a<b) {c=a;a=b;b=c;} //前面比后面的数大 for(i=a;i>1;i--) { if(a%i==0 && b%i==0) { printf("gcb %d ",i); break; } } }

巴州区18695779402: 利用函数求出2个正整数的最大公约数.c语言 -
野堂利欧:[答案] 辗转相除法求最大公约数! #include int main() { /*辗转相除法求x与y最大公约数*/ int x, y, r,temp; x =100, y=60; if(x

巴州区18695779402: 用C语言写出 输入两个正整数a和b,求其最大公约数 -
野堂利欧: 最小公倍数就是既可被m整除也可被n整除的数. if (m>=n ) j=m; else j=n;从m和n中较大的那个数开始找起,比它小的数当然不用考虑了.当然,其实你从j=1开始找起也没问题. for ( ;!(j%m==0&&j%n==0); j++); 如果j整除m为0,而且整除n也为0,那么答案找到了,循环停止.否则j取下一个数继续分析. printf这句不用分析了吧..

巴州区18695779402: c语言编程求两个正整数的最大公约数和最小公倍数! -
野堂利欧:[答案] main() { int p,r,n,m,temp; printf("Please enter 2 numbers n,m:"); scanf("%d,%d",&n,&m);//输入两个正整数. if(n

巴州区18695779402: C语言,编写两个函数,分别求两个正整数的最大公约数和最小公倍数,结果作为函数返回值返回 -
野堂利欧: # include <stdio.h> int gcd(int x,int y)//最大公约数 {if (y==0)return x;elsereturn gcd(y,x%y); } int lcd (int x,int y,int z)//最小公倍数 {return x*y/z; } int main() {int a,b,c;scanf("%d%d",&b,&c);int d=gcd(b,c);printf("%d %d",d,lcd(b,c,d));return 0; }

巴州区18695779402: 用C语言实现对键入两个正整数求最大公约数 -
野堂利欧: 输入两个正整数m和n,求它们的最大公约数和最小公倍数 比如,输入m和n的值分别为14和21,则最大公约数为7,最小公倍数为42. #include<stdio.h> void main() {int m,n,i,j;scanf("%d%d",&m,&n);for(i=m;i>=1;i--){if (n%i==0&&m%i==0...

巴州区18695779402: C语言题目 递归计算两个正整数的最大公约数 -
野堂利欧: #includevoid swap(int *m,int *n){ int t; if(m < n){ t = n; n = m; m = t; } } int f(int m,int n){ if(m%n == 0)return n; else return f(n,m%n); } int main(){ int p = 0,m = 0,n = 0; printf("请按照由大到小的顺序输入两个整数,用空格隔开:\n"); scanf("%d%d",&m,&n); swap(m,n); p = f(m,n); printf("两个数的最大公约数是:%d\n",p); return 0; }

巴州区18695779402: C语言求两个数m、n的最大公约数.(带注释) -
野堂利欧:[答案] 用辗转相除法(欧几里德法)求最大公约数 算法描述: m用n求余为a, 若a不等于0 则 m = n, n = a, 继续求余 否则(即若a为0) n 为最大公约数gcd(int a, int b) { int t; if (a if (b == 0) return a; else t= a%b; while (t!= 0) { a=b; b=t; t=a%b; } return b; } ...

巴州区18695779402: C语言求两个整数的最大公约数程序 -
野堂利欧: for后面的括号中需要用分号而不是逗号,请改

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网