博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大公约数
阅读量:7254 次
发布时间:2019-06-29

本文共 797 字,大约阅读时间需要 2 分钟。

最大公约数,根据《编程之美》递归版写的非递归版:

1. 对于y和x来说,如果y=k*y1, x = k * x1。那么有gcd(y,x)=k*gcd(y1, x1);

2. 如果x=p*x1, p是素数(质数),并且y%p != 0,那么gcd(x, y) = gcd(p * x1, y) = gcd(x1, y)。

1 int gcd(int x, int y) { 2     int a = x, b = y; 3     int factor = 0; 4     while (a != 0 && b != 0) { 5         if (a < b) { 6             swap(a, b); 7         } 8         if (a & 0x01 == 0) { 9             if (b & 0x01 == 0) {10                 b >>= 1;11                 factor++;12             }     13             a >>= 1;14         } else {15             if (b & 0x01 == 0) {16                 b >>= 1;17             } else {18                 a -= b;19             }20         }            21     }22     if (a == 0) return b << factor;23     if (b == 0) return a << factor;24 }

 

转载于:https://www.cnblogs.com/linyx/p/3972581.html

你可能感兴趣的文章
杭电多校第二场 1005 hack it
查看>>
VMM2012应用指南之9-向VMM中添加VMware ESX Server主机
查看>>
Exchange日常管理之二十二:配置保留策略
查看>>
Android -- Webview自适应屏幕
查看>>
从Delphi 7升级到Delphi XE
查看>>
android圆形图像
查看>>
Oracle数据库备份还原工具之Expdp/IMPdp
查看>>
【转】android JNI编程 一些技巧(整理)
查看>>
MySQL之终端(Terminal)管理数据库、数据表、数据的基本操作
查看>>
各种排序算法汇总
查看>>
C#巧用Excel模版变成把Table打印出来
查看>>
SOAP 及其安全控制--转载
查看>>
JarSearch
查看>>
[Unity3D][Vuforia][IOS]vuforia在unity3d中添加自己的动态模型,识别自己的图片,添加GUI,播放视频...
查看>>
Freemodbus介绍及测试
查看>>
[转]Phantomjs实现获取网页快照并生成缩略图
查看>>
leveldb源码学习系列
查看>>
Linux 运行 apt-get install 就出现jdk installer 错误的解决方法
查看>>
Android OpenGL ES(九)绘制线段Line Segment .
查看>>
Ubuntu下安装配置JDK1.7
查看>>