#include <iostream.h>
long gcd1(long x,long y)
{//直接实现辗转相除法 对于大整数而言,取模运算开销非常昂贵
return (!y)?x:gcd1(y,x%y);
}
long gcd2(long x,long y)
{//免去了大整数除法 但是迭代次数比以前的迭代次数多了很多
if (x<y)
{
return gcd2(y,x);
}
if (y==0)
{
return x;
}
else
{
return gcd2(x-y,y);
}
}
long gcd3(long x,long y)
{//最优的算法
if (x<y)
{
return gcd3(y,x);
}
if (y==0)
{
return x;
}
else
{
if (x%2==0)
{//x is even
if (y%2==0)
{//y is even
return (gcd3(x>>1,y>>1)<<1);
}
else
{
return gcd3(x>>1,y);
}
}
else
{
if (y%2==0)
{//y is even
return gcd3(x,y>>1);
}
else
{
return gcd3(y,x-y);
}
}
}
}
void main()
{
// cout<<gcd1(100000,1)<<endl;
// cout<<gcd2(100000,1)<<endl;
cout<<gcd3(100000,1)<<endl;
}
算法设计,源码,复杂度最小的三种求最大公约数的方法,源码
需积分: 9 113 浏览量
2009-07-16
21:04:04
上传
评论
收藏 118KB RAR 举报
cuiyuzheng
- 粉丝: 468
- 资源: 57
最新资源
- 基于python开发的口红色号识别程序+源码+开发文档+源码解析(毕业设计&课程设计&项目开发)
- TP-LINK TL-WN725N V3 Linux 驱动
- 020ssm-jsp-mysql班级同学录网站.zip(可运行源码+数据库文件+文档)
- 什么是stm32f103rct6,有哪些优缺点?
- 李明哲尚能2.zip
- 019ssm-jsp-mysql奥迪维修保养服务管理系统.zip(可运行源码+数据库文件+)
- AB测试数据-增设中小店铺广告位
- YOLOv8红外场景的车辆-行人-斑马线-交通灯检测+数据集+pyqt界面
- 基于JSP毕业设计-OA办公自动化系统-毕业设计.zip
- 基于JSP毕业设计-MVC设计模式应用之游戏卡在线销售系统(论文).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈