求最大公约数的两种算法

求最大公约数的四种算法 一. 题目分析 如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。 根据约数的定义可知,某个数的所有约数一定不大于这个数本身,几个自然数的最大公约数也一定不大于其中任何一个数。所以当要求任意两个正整数的最大公约数,即是求出一个不大于其中两数中的任何一个,但又能同时整除两个整数的... 阅读详情

辗转相除法和移位相减法(Euclid & stein 算法)

给出Stein算法如下:

  1. 如果A=0,B是最大公约数,算法结束
  2. 如果B=0,A是最大公约数,算法结束
  3. 设置A1 = A、B1=B和C1 = 1
  4. 如果An和Bn都是偶数,则An+1 =An /2,Bn+1 =Bn /2,Cn+1 =Cn *2(注意,乘2只要把整数左移一位即可,除2只要把整数右移一位即可)
  5. 如果An是偶数,Bn不是偶数,则An+1 =An /2,Bn+1 =Bn ,Cn+1 =Cn (很显然啦,2不是奇数的约数)
  6. 如果Bn是偶数,An不是偶数,则Bn+1 =Bn /2,An+1 =An ,Cn+1 =Cn (很显然啦,2不是奇数的约数)
  7. 如果An和Bn都不是偶数,则An+1 =|An -Bn|,Bn+1 =min(An,Bn),Cn+1 =Cn
  8. n++,转4

//greatest common divisor
//by heaton
//2005/03/11

#include <iostream>

using namespace std;

//交换a ,b的值
void swap(int& a1,int &b1)
{
    int temp;
    temp=a1;
    a1=b1;
    b1=temp;
} 
  
//辗转相除法
int gcd(int a,int b)
{
    if(a < b)swap(a,b);
    int c=a%b;
    //cout<<"辗转相除法/n"<<"a   b/n"<<a<<" "<<b<<"/n";
    while(c!=0)
    {
        a=b;
        b=c;
        cout<<a<<" "<<b<<"/n";
        c=a%b;
    }
    return b;    
}

//移位相减法
int gcd2(int a,int b)
{
    if(a < b)swap(a,b);
 //cout<<a<<" "<<b<<endl;//跟踪a,b的值
    if(a==0)return b;
    if(b==0)return a;
    while(a != b)
    {
       
        if(( (a&1) == 0 ) && ( (b&1) == 0 )){
            return 2*gcd2(a/2,b/2); //a,b are even numbers
        }else if(( (a&1) == 1 ) && ( (b&1) == 0)){
            return gcd2(a,b/2); //a is odd number , b is even number
        }else if(((a&1) == 0 ) && ( (b&1) == 1) ){
            return gcd2(a/2,b);//a....even   ;b ...odd ...
        }else if(((a&1) == 1 ) && ((b&1) == 1)){
            return gcd2(b,(a-b)); //a,b are odd numbers
        }   
    } 
    return b; 
}

//通过递归调用求n个数的最大公约数 
int ngcd(int a[],int n)
{ 
 
  if (n==1)
 return a[0];
  else
 return gcd2(a[n-1],ngcd(a,n-1));
}


int main()
{
 int m=gcd(15,25);
 cout<<m<<"/n 移位相减法/na   b/n";
 int n=gcd2(15,20);
 cout<<n<<"/n the common divisor of array {450,90,15,45} /n";
 int a[]={450,90,15,45};//应该先按升序对数组排序
 int x=ngcd(a,4);
 cout<<" value:"<<x<<endl;///??????
 return 0;
} 

RK3568平台(camera篇) MPP编码 同芯片的差异,为使用者提供统一的视频媒体处理接口(Media Process Interface,缩写 MPI)。瑞芯微提供的媒体处理软件平台(Media Process Platform,简称 MPP)是适用于瑞芯微芯片系列的。mpi_enc_test 的命令参数中,图像宽度(w)图像高度(h),码流类型(t)为强制要求参数,其他参。视频拷贝,缩放,色彩空间转换,场视频解交织(Deinterlace)数如输入文件(i),输出文件(o),编码帧数(n)等为可选参数。设置一些MPP的模式。 阅读详情

相关推荐

2021英伟达暑期实习面经(芯片设计)

2021英伟达暑期实习面经(芯片设计前端/DFT) 准备了将近一个月,终于赶在三月的最后一天拿到了offer,暑期实习算是上岸了,后面还有阿里/华为等一些国内公司的面试,但既然拿到了nv的offer,后面的先就当积累面试经验吧~ 网上关于nv的实习or秋招面经很少,硬件岗的更少(约等于没有好吧)。之前准备面试的时候,在网上找了半天,好像就只在牛客网上见过一篇关于nv硬件岗的面经,幸好当时认真看了哈哈。所以既然幸运上岸了,想趁自己还记得,record一下,希望可以帮到有缘人呀~ 好了,废话不多说,开始正题。

Hadleysjtu的博客 1万+

浅析求两个数的最大公约数的三种算法

第一种方法:#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h>int Max_Com_Divisor(int x, int y)//用辗转相减法求最大公约数 { while (1)//用大数减去小数并将结果保存在大数中 { if (x > y

小葱的博客 4万+

潜行游戏设计:核心机制与关卡设计解析

潜行游戏作为动作游戏的重要分支,通过视觉遮蔽、声音传播和AI行为树等复杂系统,为玩家提供独特的策略体验。视觉隐蔽系统采用视野锥和光照值的双重判定,声学传播模型模拟距离衰减和材质穿透,而敌人AI行为树则包含巡逻、警戒和团队协作等状态节点。这些技术不仅提升了游戏的真实感和挑战性,还在《合金装备》《刺客信条》等经典作品中得到广泛应用。潜行游戏的关卡设计强调多路径拓扑结构和环境叙事元素,通过沙漏模型和动态难度调节,平衡自由度和开发成本。未来,基于ML的适应性AI和物理模拟的隐蔽系统将成为创新方向。

weixin_42497762的博客 179

求最大公约数的4种算法(C++)

求最大公约数的4种算法(C++) 一、实验目的 1.计算两个正整数的最大公约数和最小公倍数,并进行程序的调式与测试。 2.理解四种不同的求最大公约数的方法,学习其思维模式。 3.了解算法的概念。对问题的分析时,进行合适的算法设计。 二、算法设计 1.题目分析 (1)首先输入一对正整数,对两个数进行判断,若不是正整数,则给出提示并重新输入,直至两个数均为正整数为止。 (2)将两个数传入计算最大公约数...

Elf.筱焱的博客 8万+

Multisim滞回比较器电路设计与仿真实战:从理论到应用

本文详细介绍了Multisim滞回比较器电路设计与仿真实战,从基础理论到实际应用全面解析。通过门铃原理类比解释滞回特性,提供2-5V阈值检测电路的设计步骤和Multisim仿真技巧,并延伸至温度控制系统等实际工程应用,帮助读者掌握电路设计与优化的核心方法。

assembly8low的博客 1081

6.2 磁悬浮轴承:软件架构与实现

本文系统阐述了磁悬浮轴承控制系统的软件架构与实现方法。采用分层架构设计,包括硬件抽象层、实时控制内核、控制算法层和应用层,确保系统实时性和可靠性。重点分析了电流环、位置环等关键控制任务的调度策略,比较了不同硬件平台(DSP、ARM、FPGA)的软件实现方案。强调模块化设计、配置化管理等工程实践,并详细介绍了从算法仿真到系统联调的完整开发流程。最后指出严格的测试验证是保证系统性能的关键,需通过多阶段测试评估起浮时间、稳态精度等核心指标。

技术工作者 752

如何求解最大公约数和最小公倍数

1 定义 最大公约数 greatest common divisor,简写为gcd;或highestcommon factor,简写为hcf 如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。 例: 在2、4、6中,2就是2,4,6的最大公约数。 最小公倍数 最小公

公众号(猴子数据分析) 2万+

【python】import pandas as pd用法

是 Python 里最常用的数据分析库之一。 的意思是:导入 pandas 库,并给它起个别名 。这样用起来更简洁: 下面总结 pandas 的常见用法(配例子)。目录🔹 1. 数据结构(1) Series(一维数据,类似于数组 + 标签)(2) DataFrame(二维数据表,类似于 Excel 表格)🔹 2. 数据读写🔹 3. 数据查看🔹 4. 数据选择与索引🔹 5. 数据清洗🔹 6. 数据运算🔹 7. 数据筛选(布尔索引)🔹 8. 分组与聚合🔹 9. 排序 Pandas 常用方

2401_86285609的博客 1531

辗转相除法、更相减损法、Stein算法

最大公约数和最小公倍数求解,常用的方法是短除法进行因式分解,然后最大公约数是所有公共因子的乘积,最小公倍数是所有因子的乘积。 本质上求最小公倍数就是求最大公倍数:x=m*a, y=m*b;m是最大公约数,那最小公倍数就是m*a*b。所以可以得到最大公约数与最小公倍数的关系: LCM(A,B)×GCD(A,B)=A×BLCM(A,B)×GCD(A,B)=A×B LCM(A,B)×GCD(A,...

优快云文章已停止维护,后续文章会在 https://blog.hufeifei.cn 持续更新 1万+

在ubuntu20.04上配置VINS_Fusion(亲测有效,一应俱全)

最近在做科研训练的时候配置了HKUST-Aerial-Robotics实验室的VINS_Fusion代码项目,经历了一些编译报错的问题,在网上查找的时候博客内容良莠不齐,且实质针对性意见不多,于是在此记录下自己配置期间遇到的一些共性问题,留作自己日后参考和大家的交流学习。

wyr1849089774的博客 8266

基于Jeecgboot3.9.0的vue3版本前后端分离的flowable流程管理平台

基于Jeecgboot3.9.0的vue3版本前后端分离的flowable流程管理平台

宁波阿成的博客 900

求最小公倍数的两种算法(最大公约数的三种算法)

最小公倍数的三种算法 求两个数字的最小公倍数是很常见的运算。比如,3和5的最小公倍是15。6和8的最小公倍数是24。 下面的算法为给定的两个正整数求它的最小公倍数。 ** 1.辗转相除,相减 又称公式法,两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即利用辗转相除法(欧几里得算法)或者辗转相减(更相减损术)先求出最大公约数再用两数之积除以最大公约数得出最小公倍数。 首先先复习一下什么是辗转相除法和辗转相差法 辗转相除: 假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法(辗

weixin_46569912的博客 7万+

threadX的USBX的初始化和解初始化的分析。

tx_application_define的最后会使用tx_byte_pool_create创建usb线程的内存空间“ux_device_app_byte_pool”,再创建usb线程,也就是执行。主要就是创建了线程,也就是第3个参数app_ux_device_thread_entry,这个参数内是MX_USB_Device_Init,也就是USB底层初始化。进来的参数只有1个,是memory_ptr,这个就是创建的usb线程空间“ux_device_app_byte_pool”

qq_31885403的博客 647

求最大公约数的两种常见算法

求最大公约数的两种常见算法 欧几里得算法#include using namespace std; int gcd (int m,int n); int main(void) { int a,b; cin >> a >> b; cout << gcd(a,b); return 0; } int gcd (int m,int n) { int te

carver的博客 479

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java操练之求两数最大公约数的两种算法思路

代码: 1 public class Hello { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 int a = 1112; 8 int b = 208; 9 int e...

weixin_30758821的博客 142

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

两种求最大公约数算法

//----------------------------------- //--name:get_gcd_div //--parameter: Mdata , Ndata //--function:using division get the greatest common divisor //--注:辗转相除法 //-----------------------------------

alihouzi的专栏 483

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

求最大公约数(两种算法)

输入:两个不全是负数的整数输出:这两个数的最大公约数C++语言描述判断连个数的大小if(m>=n){while(m%n!=0){m = n;n = temp;=0){n = m;m = temp;自然语言描述(当m > n 时)用较大的数除以较小的数取余,若得到的结果为0,那么就返回较小的数作为最大公约数。反之将上一步中的除数作为被除数,将他们的余数赋值给除数,循环这样做,直至得到的余数为0,最后的除数就是最大公约数。

Cha3043445754的博客 533

最大公约数简便算法_C语言求最大公约数(两种最简单的算法实现)

第一种:用较小数的最大约数于较大数作求模元算#include/*求两个数的最大公约数*/intmain(){inta,b,max,min,i,result;scanf("%d,%d",&a,&b);printf("您输入的的值分别为%d,%d\n",a,b);if(a>b){max=a;min=b;}elseif(a==b){result=a;gotoout;}e...

weixin_39803552的博客 153

最大公约数程序c语言,C语言求最大公约数(两种最简单的算法实现)

第一种:用较小数的最大约数于较大数作求模元算#include/*求两个数的最大公约数*/intmain(){inta,b,max,min,i,result;scanf("%d,%d",&a,&b);printf("您输入的的值分别为%d,%d\n",a,b);if(a>b){max=a;min=b;}elseif(a==b){result=a;gotoout;}e...

weixin_35361243的博客 4087

c语言求最大约数,C语言求最大公约数(两种最简单的算法实现)

第一种:用较小数的最大约数于较大数作求模元算#include/*求两个数的最大公约数*/intmain(){inta,b,max,min,i,result;scanf("%d,%d",&a,&b);printf("您输入的的值分别为%d,%d\n",a,b);if(a>b){max=a;min=b;}elseif(a==b){result=a;gotoout;}e...

weixin_29542759的博客 1057

求最大公约数的两种算法 (专贴)

辗转相除法和移位相减法(Euclid & stein 算法)给出Stein算法如下: 如果A=0,B是最大公约数,算法结束 如果B=0,A是最大公约数,算法结束 设置A1 = A、B1=B和C1 = 1 如果An和Bn都是偶数,则An+1 =An /2,Bn+1 =Bn /2,Cn+1 =Cn *2(注意,乘2只要把整数左移一位即可,除2只要把整数右移一位即可) 如果An是偶数,Bn不是偶数,则A

美丽人生 1240

c语言最大公约数简单,C语言求最大公约数(两种最简单的算法实现)

第一种:用较小数的最大约数于较大数作求模元算#include/*求两个数的最大公约数*/intmain(){inta,b,max,min,i,result;scanf("%d,%d",&a,&b);printf("您输入的的值分别为%d,%d\n",a,b);if(a>b){max=a;min=b;}elseif(a==b){result=a;gotoout;}e...

weixin_33970380的博客 324

c语言实现求最大公约数的三种方法,C语言求最大公约数(两种最简单的算法实现)...

第一种:用较小数的最大约数于较大数作求模元算#include/*求两个数的最大公约数*/intmain(){inta,b,max,min,i,result;scanf("%d,%d",&a,&b);printf("您输入的的值分别为%d,%d\n",a,b);if(a>b){max=a;min=b;}elseif(a==b){result=a;gotoout;}e...

weixin_39685836的博客 479

求最大公约数(GCD)的两种算法

之前一直只知道欧几里得辗转相除法,今天学习了一下另外一种、在处理大数时更优秀的算法——Stein 特此记载 1.欧几里得(Euclid)算法 又称辗转相除法,依据定理gcd(a,b)=gcd(b,a%b) 实现过程演示: sample:gcd(15,10)=gcd(10,5)=gcd(5,0)=5 C语言实现: 1 int Euclid_GCD(int a, int b) ...

weixin_34364071的博客 286

欧几里德和stein两种算法求最大公约数

1.欧几里德原理:`gcd(x,y) = gcd(y,x%y)` 2.stein原理:`gcd(k*x,k*y) = k*gcd(x,y)` Python实现 #欧几里德辗转相除法求最大公约数 def euclidGcd(x,y): assert x >= 0 and y >= 0 if y == 0: return x return euclidGcd(y,

sinat_16968575的专栏 816
上一篇: Bill Gates 的大学毕业典礼演讲
下一篇: 关上宿舍的门,锁上这段回忆 ... ...
sedge
博客等级 码龄23年 8粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值