求两个整数的最大公约数

《C和指针》第7章第2道编程题:

两个整型值M和N(M、N均大于0)的最大公约数可以按照下面的方法计算:

请编写一个名叫gcd的函数,它接受两个整型参数,并返回这两个数的最大公约数。如果这两个参数中的任何一个不大于零,函数返回零。

 1 /*
 2 ** 求两个整数的最大公约数
 3 */
 4
 5 #include <stdio.h>
 6
 7 int gcd( int M, int N );
 8
 9 int
10 main()
11 {
12     int m, n;
13     scanf( "%d%d", &m, &n );
14     printf( "%d", gcd( m, n ) );
15     return 0;
16 }
17
18 /*
19 ** 求两个整数的最大公约数
20 ** 如果两个参数中任一个数不大于0,函数返回0
21 */
22 int
23 gcd( int M, int N )
24 {
25     int R, t;
26
27     /*
28     ** 如果M,N任一个数不大于0,函数返回0
29     */
30     if( M <= 0 || N <= 0 )
31         return 0;
32
33     /*
34     ** 保证M>=N
35     */
36     if( M < N )
37     {
38         t = M;
39         M = N;
40         N = t;
41     }
42
43     /*
44     ** 求最大公约数
45     */
46     while( ( R = M % N ) > 0 )
47     {
48         M = N;
49         N = R;
50     }
51
52     return N;
53 }
时间: 2024-10-29 19:07:39

求两个整数的最大公约数的相关文章

求两个整数的最大公约数和最小公倍数

//求最大公约数是用辗转相除法,最小公倍数是根据公式 m,n 的 最大公约数* m,n最小公倍数 = m*n 来计算 #include<stdio.h> //将两个整数升序排列 void ascNum(int *p1,int *p2) { int temp; if(*p1 > *p2) { temp = *p2; *p2 = *p1; *p1 = temp; } } //求两个整数的最大公约数 辗转相除法 int getAppr(int a, int b) { int c; ascNum

002:求两个整数的最大公约数和最小公倍数

求最大公约数可采用辗转相除法,其流程如图所示. 最小公倍数就是两个整数的乘积除以其最大公约数. 1 #include <stdio.h> 2 3 int main() 4 { 5 unsigned long a, b, c=0; //两个整数和临时变量 6 unsigned long lcm=0, gcd=0; //最小公倍数和最大公约数 7 8 while( 1 ) 9 { 10 printf("Please input two positive integers(spacebar

C++求两个整数的最大公约数和最小公倍数

最小公倍数=两个整数的成绩 / 最大公约数 求最大公约数的方法: (1)辗转相除法 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int a,b,tmp,m; 6 cin>>a>>b; 7 m=a*b; 8 if(a<b) 9 { 10 tmp=b; 11 b=a; 12 a=tmp; 13 } 14 while(b!=0) 15 { 16 tmp=a%b; 17 a=b; 18 b

c语言编程求两个整数的最大公约数(两种方法)

第一种(for循环) #include <stdio.h> #include <stdlib.h> int main() { int i, min, k, a, b; printf("请输入两个整数:\n"); scanf("%d%d", &a, &b); if (a>b)//此处if else语句可以删除(只是为了少执行几步程序) min = b; else min = a; for (i = min; i>0;

C语言求两个整数的最大公约数

------------------------------------------------------------------------------------------------------ 最大公约数(又叫最大公因数):指两个或者多个整数共有约数中最大的一个.求最大公约数有多种方法,常见的有质因数分解法.短除法.辗转相除法.更相减损法.在这里本人建议使用后两种方法实现. -------------------------------------------------------

求两个整数的最大公约数与最小公倍数

//输入两个正整数m和n,求其最大公约数和最小公倍数. 方法一: public class ZuiDaoGongYueShuYuZuiXiaoGongBeiShu { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入第一个整数m: "); int m=scanner.nextInt(); System.out.println(&

写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。

题目描述 输入 两个数 输出 最大公约数 最小公倍数 样例输入 6 15 样例输出 3 30 代码:#include<stdio.h>int gys(int a,int b){    while(a%b!=0)    {        int t;        t=a%b;        a=b;        b=t;        }        return b;    }int gbs(int a,int b){     return a*b/gys(a,b);    }int m

《Advanced Bash-scripting Guide》学习(十九):两个整数的最大公约数

本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者 杨春敏 黄毅 1 #!/bin/bash 2 #求两个整数的最大公约数 3 4 E_BADARGS=65 5 6 #如果参数个数不为2,以参数错误退出 7 if [ $# -ne 2 ] 8 then 9 echo "Usage: `basename $0` first-number second-number" 10 exit $E_BADARGS 11 fi 12 13 #如果

利用递归求两个数字的最大公约数。

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> //利用递归求两个数字的最大公约数. //公因数,如果一个整数同时是几个整数的约数,则这个整数为它们的"公约数" function getNum(a, b) { va