c++(最大公约数)

《C++程序设计 * 基础、编程抽象与算法策略》

Programming Abstractions in C++

[美] 埃里克S. 罗伯茨(Eric S. Roberts)著 李雁妮 译


最大公约数(Greatest Common Divisor, gcd)

即一个可以同时整除 x 和 y 的最大整数

希腊数学家 * 欧几里得 算法:

1、用 x 除以 y 并计算余数 r;

2、若 r 等于0,则算法结束,最大公约数为 y。

3、若 r 不等于0,则令 x 的值为 y ,y 的值为 r ,重复该过程。


代码:

  1 /*
  2  * File: gcd.cpp
  3  * _ _ _ _ _ _ _ 
  4  * Greatest Common Divisor
  5  */
  6 #include <iostream>
  7 
  8 int gcd(int x, int y);
  9 
 10 int main()
 11 {
 12         int n1, n2;
 13         std::cout<< "*** Greatest Common Divisor ***" <<std::endl;
 14         std::cout<< "Enter 1st number: ";
 15         std::cin>> n1;
 16         std::cout<< "Enter 2nd number: ";
 17         std::cin>> n2;
 18         std::cout<< "gcd of " << n1 << " and " << n2 << " is " << gcd(n1,n2) <<std::endl;
 19         return 0;
 20 }
 21 
 22 int gcd(int x, int y)
 23 {
 24         int r = x % y;
 25         while(r != 0)
 26         {
 27                 x = y;
 28                 y = r;
 29                 r = x % y;
 30         }
 31         return y;
 32 }

执行:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值