/*

二进制求最大公约数。
由于传统的GCD,使用了%,在计算机运行过程中
要花费大量的时间,所以,采取二进制的求法,来减少时间的消耗。

算法:

当a,b都是偶数时: gcd(a,b)=2*gcd(a/2,b/2);
当a,b一奇一偶时: if(a&1) gcd(a,b)=gcd(a,b/2);
                  else    gcd(a,b)=gcd(a/2,b);
当a,b都是奇数时:  if(a>b)
                     gcd(a,b)=gcd( (a-b)/2, b);
                  else
                     gcd(a,b)=gcd( a,(b-a)/2);

其实就是把偶数的/2,而且奇数-奇数=偶数。
*/

 #include<stdio.h>

 int Binary_GCD(int a,int b)
{
int c=;
while(a-b)
{
if(a&)
{
if(b&)
{//都是奇数
if(a>b) a=(a-b)>>;
else b=(b-a)>>;
}
else //一奇数一偶数
b=b>>;
}
else//a 是偶数
{
if(b&) a=a>>;
else
{
c=c<<;b=b>>;a=a>>;
}
}
}
return c*a;
} int main()
{
int n,m;
while(scanf("%d%d",&n,&m)>)
{
printf("%d\n",Binary_GCD(n,m));
}
return ;
}

二进制GCD算法 减少%的时间消耗的更多相关文章

  1. 二进制GCD算法解析

    UPD 2018.3.30 这个好像就是更相减损术的样子emmm UPD 2018.5.22 好像不是更相减损术而是叫Stein算法的样子emmm 蒟蒻来做个二进制GCD笔记. 为什么要写这个东西呢, ...

  2. 【数论】二进制GCD

    二进制GCD     GCD这种通用的算法相信每个OLER都会 ,辗转相除,代码只有四行 : int GCD(int a,int b){ if(b==0) return a; return GCD(b ...

  3. 不同的GCD算法

    分类: C语言程序2014-10-08 15:10 28人阅读 评论(0) 收藏 举报 gcdC语言程序位运算 早在公元前300年左右,欧几里得就在他的著作<几何原本>中给出了高效的解法- ...

  4. 扩展gcd算法

    扩展gcd算法 神tm ×度搜索exgcd 打到exg的时候出来ex咖喱棒... 球方程\(ax+by=\gcd(a,b)\)的一个解 如果\(b=0\),那么\(\gcd(a,b)=a\),取\(x ...

  5. JavaScript 的时间消耗--摘抄

    JavaScript 的时间消耗 2017-12-24 dwqs 前端那些事儿 随着我们的网站越来越依赖 JavaScript, 我们有时会(无意)用一些不易追踪的方式来传输一些(耗时的)东西. 在这 ...

  6. gcd和拓展gcd算法

    gcd算法是用来求两个数最大公约数的算法,他是依靠辗转相除(中国好像叫辗转相减)法来求两个数的最大公约数,别的地方也有很多介绍不做过多赘述,主要提供代码供自己参考. gcd(int a,int b) ...

  7. 在项目管理中如何保持专注,分享一个轻量的时间管理工具【Flow Mac版 - 追踪你在Mac上的时间消耗】

    在项目管理和团队作业中,经常面临的问题就是时间管理和优先级管理发生问题,项目被delay,团队工作延后,无法达到预期目标. 这个仿佛是每个人都会遇到的问题,特别是现在这么多的内容软件来分散我们的注意力 ...

  8. 减少TIME_WAIT时间的优化配置

    减少TIME_WAIT时间的优化配置 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: net.ipv4.tcp_max_syn_backlog=8192 增加TCP S ...

  9. 测试mysqldump 压缩率和时间消耗

    测试mysqldump 压缩率和时间消耗 实验总结: 从本次实验数据可以看出,mysqldump通过|gzip参数可以将导出文件压缩53%,同时耗时也普通非压缩模式的2.3倍. 数据库环境: #[ro ...

随机推荐

  1. 974. Subarray Sums Divisible by K

    Given an array A of integers, return the number of (contiguous, non-empty) subarrays that have a sum ...

  2. 768. Max Chunks To Make Sorted II

    This question is the same as "Max Chunks to Make Sorted" except the integers of the given ...

  3. 《Python绝技:运用Python成为顶级黑客》 用Python进行无线网络攻击

    本章大部分代码都是实现了但是缺乏相应的应用环境,想具体测试的可以直接找到对应的环境或者自行修改脚本以适应生活常用的环境. 1.搭建无线网络攻击环境: 用Scapy测试无线网卡的嗅探功能: 插入无线网卡 ...

  4. 3. Decision Tree

    1. 算法流程 一般的,一颗决策树包含一个根结点.若干内部结点和若干叶结点:叶节点对应于决策结果,其他每个结点则对应于一个属性测试结果:每个结点包含的样本集合根据属性测试的结果被划分到子结点中:根结点 ...

  5. 【8】JMicro微服务-JMicro ZKUI

    ZKUI是一个开源项目,是一个查看,修改ZK数据非常方便的工具.JMicro基于ZK做服务治理,配置管理,因此使用ZKUI会提供非常大的方便. Github地址:https://github.com/ ...

  6. linux初始

    运维 IT运维,指IT公司中,运行和维护服务器的工作 核心工作: ​ 数据不能丢失 ​ 7*24小时运行 ​ 提高用户访问效率 一句换 管服务器的 服务器 要管服务器那就得先了解服务器 服务器也称为伺 ...

  7. Kali Linux 弱点分析工具全集

    『弱点分析』与『信息收集』类工具的定位非常不同,其中包含大量的模糊测试工具.正确使用这些工具,将有助于我们发现可能存在的零日漏洞.同时此类工具中还包含了大量VoIP相关的渗透测试工具,这可能是安全人员 ...

  8. android开发分辨率适配总结

    重要概念 什么是屏幕尺寸.屏幕分辨率.屏幕像素密度? 什么是dp.dip.dpi.sp.px?他们之间的关系是什么? 什么是mdpi.hdpi.xdpi.xxdpi?如何计算和区分? 在下面的内容中我 ...

  9. EJB3 阶段总结+一个EJB3案例 (2)

    这篇博文接着上一篇博文的EJB案例. 在上一篇博文中,将程序的架构基本给描述出来了,EJB模块分为5层. 1)DB层,即数据库层 在则一部分,我使用的数据库为mysql.在EJB程序中,访问数据库是通 ...

  10. spring boot启动加载数据

    实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求.为了解决这样的问题,spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实 ...