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

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

方法一:辗转相除法

优点:代码简单,容易写。缺点:开销大,用时间多。

代码:

int  gcd(int a,int b){    return b==0?a:gcd(b,a%b);}

方法二:二进制算法

优点:速度快。

主要思想:

前提:a>b,分情况讨论:

1.a和b均为偶数,gcd(a,b)=2*gcd(a/2,b/2);

2.a为偶数b为奇数,gcd(a,b)=gcd(a/2,b);

3.a和b均为奇数,gcd(a,b)=gcd(a-b,b)

 

代码:

int gcd(int a,int b){    int t=1,c,d;    while(a!=b)    {        if(a
>=1; c=1;//a为偶数的标志 } else c=0; if(!(b&1))//如果b为偶数 { b>>=1; d=1;//b为偶数的标志 } else d=0; if(c&&d)//a,b都为偶数 t<<=1;//公因子 else if(!c&&!d//a,b都为奇数 a-=b; } return t*a;}

方法三:

int gcd(int a,int b){    if(!a)        return b;    int c;    while(b)    {        c=b;        b=a%b;        a=c;    }    return a;}

 

转载于:https://www.cnblogs.com/vivider/p/3697510.html

你可能感兴趣的文章
59、Spark Streaming与Spark SQL结合使用之top3热门商品实时统计案例
查看>>
60、Spark Streaming:缓存与持久化机制、Checkpoint机制
查看>>
61、Spark Streaming:部署、升级和监控应用程序
查看>>
62、Spark Streaming:容错机制以及事务语义
查看>>
63、Spark Streaming:架构原理深度剖析
查看>>
64、Spark Streaming:StreamingContext初始化与Receiver启动原理剖析与源码分析
查看>>
65、Spark Streaming:数据接收原理剖析与源码分析
查看>>
66、Spark Streaming:数据处理原理剖析与源码分析(block与batch关系透彻解析)
查看>>
67、性能调优
查看>>
1、zookeeper入门
查看>>
2、zookeeper原理
查看>>
1、kafka概述
查看>>
2、kafka集群搭建
查看>>
3、kafka工作流程
查看>>
4、spark streaming+kafka
查看>>
SQL基础-建表
查看>>
SQL基础-操纵表及插入、查询
查看>>
SQL基础-过滤数据
查看>>
SQL基础-创建新的输出字段
查看>>
SQL基础-汇总统计及GROUP BY
查看>>