求两个正整数的最大公约数?

原创 2006年06月21日 11:30:00

给定两个正整数,求它们的最大公约数,对于这个算法想必大家都已经知道,解决这个问题最经典的方法是采用欧几里德算法,据说这是历史上最早的算法。
          
                     
#include <stdio.h>
#include <stdlib.h>
 
#define max(a,b)   (a) > (b) ? (a) : (b)
#define min(a,b)   (a) < (b) ? (a) : (b)
    
/*
INPUT: m,n (m >0 ,n>0)
OUTPUT: -1 error, else the common divisor of m and n
*/
int G*C*D(int m,int n)
{
     int a = max(m,n);
     int b = min(m,n);
     int remainder = 1;
     if( m<=0 || n<=0 )
     {
         return -1;
     }
     while(remainder > 0)
     {
         remainder = a % b;
         a = b;
         b = remainder;
     }
     return a;
}
      
int main(int argc, char* argv[])
{
     int first,second,result;
     if(argc != 3)
     {
         fprintf(stderr,"There should be two number/n");
         exit(-1);
     }
     first = atoi(argv[1]);
     second = atoi(argv[2]);
     result = G*C*D(first,second);
     if(result != -1)
     {
         printf("The common divisor of %d and %d is %d/n",first,second,result);
     }
     else
     {
         printf("m and n should be greater than 0/n");
     }
     return 0;
}

给定两个数m,n,使用欧几里得的辗转相除法求出它们的最大公约数

s0 segment m dw 5 n dw 15 s0 ends s1 segment stack dw 100 dup(?) top label word s1 ends ...
  • u011639085
  • u011639085
  • 2014年06月22日 10:12
  • 1020

求两个正整数的最大公约数

基本要求:从键盘输入两个整数,输出两个整数的最大公约数。用C或C++语言实现程序解决问题。 1.      程序风格良好(使用自定义注释模板) 2.      使用三种算法解决问题 3.      提...
  • qq_35968818
  • qq_35968818
  • 2017年03月22日 16:35
  • 1086

求两个正整数的最大公约数?

给定两个正整数,求它们的最大公约数,对于这个算法想必大家都已经知道,解决这个问题最经典的方法是采用欧几里德算法,据说这是历史上最早的算法。                               ...
  • henry06
  • henry06
  • 2006年06月21日 11:30
  • 1482

【数学】求两个正整数的最大公约数

题目:《编程之美》 P150 //辗转相除法 int GCD1(int a,int b) { if (a < b) swap(a, b); if (b == 0) return a; ...
  • bupt8846
  • bupt8846
  • 2015年02月02日 21:33
  • 427

求两个正整数的最大公约数GCD

1.目的: 从键盘输入两个数,输出两个正整数的最大公约数,用c语言实现。 2.算法设计思路: GCD常见算法有辗转相除法,更相减损术法,穷举法,Stein算法,本次采用3种方法,进行代码的实现。 ...
  • L_Studentd
  • L_Studentd
  • 2017年03月22日 11:31
  • 370

求最大公约数的两种算法

1.辗转相除法辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。 例如,求gcd(319,377): ∵ 377÷319=1(余58) ∴gcd(377,319)=gcd(319...
  • a253664942
  • a253664942
  • 2016年04月03日 18:03
  • 4825

求两个正整数的最大公约数

解法一:根据定义,a与b的最大公约数是指能同时整除a与b的最大整数: #include int main() { int num1 = 18; int num2 = 26; int com ...
  • m0_37956168
  • m0_37956168
  • 2017年03月28日 21:23
  • 303

简单编程(十三)编写一个方法用于求任意两个正整数的最大公约数

定义一个方法能够判断并返回两个整数的最大值,并调用自己的方法测试是否正确。...
  • zzc1510334836
  • zzc1510334836
  • 2014年11月11日 19:30
  • 650

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

* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作者:庄子豪 * 完成日期:2012 年10月30日 * 版本号:v1....
  • ZHUANGZIHAO
  • ZHUANGZIHAO
  • 2012年10月30日 19:14
  • 1656

从键盘输入两个正整数,求这两个正整数的最小公倍数和最大公约数,并输出。

#include #include int main() { int a,b,aa,bb,t=0,i,gongyue,gongbei; scanf("%d%d",&a,&b); if...
  • hyc19960202
  • hyc19960202
  • 2016年12月31日 21:15
  • 1426
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求两个正整数的最大公约数?
举报原因:
原因补充:

(最多只允许输入30个字)