如何求出最大公约数

Docker一键部署Synopsys EDA全家桶(VCS/Verdi 2018版)保姆级教程 本文提供了一份详尽的Docker容器化部署Synopsys EDA工具链(VCS/Verdi 2018版)的保姆级教程。通过环境隔离与标准化,解决传统安装的依赖冲突问题,并重点攻克了容器内GUI图形界面显示的核心难题。教程涵盖从Docker基础安装、镜像获取、容器启动配置,到使用X11转发或VNC实现Verdi完美显示的完整实践,旨在帮助芯片设计工程师快速构建稳定、可移植的一键化EDA工作环境。 阅读详情

求最大公约数你有什么办法
第一种方法还是我们的暴力法,但是在两个数的数据比较大的时候这种方法就不不好用了,还是先写代码

#include <iostream>
using namespace std;
int greatest_common_divisor(int a,int b)
{
	int max=a>b?a:b;
	int min=a<b?a:b;
	if(max%min==0)
		return min;
	for(int i=min/2;i>1;i--)
	{
	  if(min%i==0&&max%i==0)
	    return i;
	}
 return 1;
}
int main()
{
cout<<greatest_common_divisor(27,18)<<endl
;
return 0;
}

这种方法的弊端是当 求 10000和10001的最大公约数时就要循环4999次
但是不得不佩服现在的计算机,结果还是秒出,改进的方法

方法2:辗转相除法
两个整数a 和 b, 他们 的最大公约数等于a除以b的余数c和b之间的最大公约数

#include <iostream>
using namespace std;
int greatest_common_divisor(int a,int b)
{
	int max=a>b?a:b;
	int min=a<b?a:b;
	if(max%min==0)
		return min;
	return greatest_common_divisor( max%min,min);
}
int main()
{
cout<<greatest_common_divisor(25,10)<<endl
;
return 0;
}

但是当a,b数据比较大的时候,取模运算也比较复杂,
第三种方法: 更相减损术
两个整数a 和 b, 他们 的最大公约数等于a减b的差值c 和较小数b之间的最大公约数

#include <iostream>
using namespace std;
int greatest_common_divisor(int a,int b)
{
	int max=a>b?a:b;
	int min=a<b?a:b;
	if(max%min==0)
		return min;
	return greatest_common_divisor( max-min,min);
}
int main()
{
cout<<greatest_common_divisor(25,10)<<endl
;
return 0;
}

上面的那种方法避免了大整数取模的麻烦,但是 如果两个数是 10000和1的话,那么就要运算9999次,
第四种方法 位运算 在更相减损术的基础上使用移位运算
当 a b 都为偶数的时候,greatest_common_divisor(a>>1,b>>1)
当 a为偶数 b 都为奇数的时候 greatest_common_divisor(a>>1,b)
当 a为奇数 b 都为偶数的时候 greatest_common_divisor(a,b>>1)
当 a b为奇数的时候,利用更相减损术,就可以变出偶数了,然后依照上述过程进行递归

#include <iostream>
using namespace std;
int greatest_common_divisor(int a,int b)
{
	if(a==b)
		return a;
	if(a&1==0&&b&1==0)
		return  greatest_common_divisor(a>>1,b>>1)<<1;//注意,求得最后的数还要再乘回去
	else if(a&1==0&&!(b&1==0))
         return  greatest_common_divisor(a>>1,b);
    else if(!(a&1==0)&&(b&1==0))
         return  greatest_common_divisor(a,b>>1);
	else
	{
	int max=a>b?a:b;
	int min=a<b?a:b;
	return greatest_common_divisor( max-min,min);
	}
	
}
int main()
{
cout<<greatest_common_divisor(18,10)<<endl;
return 0;
}
【FastDDS】Discovery ( 01-overview ) Fast DDS 提供了多种发现机制用于自动匹配数据写入器和读取器,包括简单发现(默认兼容RTPS标准)、静态发现(可跳过SEDP阶段)、集中式的发现服务器架构以及手动RTPS发现。发现过程分为参与者发现(PDP)和端点发现(EDP)两个阶段,PDP通过多播/单播公告确认参与者存在,EDP则匹配主题和数据类型相同的端点。系统支持配置发现协议、租约期限等通用参数,以及各机制特有设置如静态EDP XML配置、服务器定位器等。此外还支持通过监听器实现发现回调功能。 阅读详情

相关推荐

Tessent IJTAG ICL:从规范到实践的硬件描述语言指南

本文深入解析Tessent IJTAG ICL语言在硬件测试中的应用,从规范到实践提供全面指南。通过模块化设计、网络提取与编辑等实战技巧,帮助工程师高效构建标准化测试网络,显著提升芯片测试效率与覆盖率。特别分享TDR/SIB/TAP的ICL实现方法及调试策略,适用于SoC、车载芯片等复杂场景。

weixin_33606346的博客 299

函数:求两个正数的最大公约数和最小公倍

要求 写两个函数,分别求两个正数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。两个正数由键盘输入。 代码 /* * 该函数用来计算两个数的最大公约数 */ int greatest_common_divisor(int m,int n) { int gcd=1,i; for(i=0;i<10;i++) { if(m%2==0 && n%2==0) { gcd = gcd*

weixin_62757251的博客 7205

horizon之为connection服务器配置证书

打开connection1服务器(connection2 同connection1)再输入connection1的IP地址 可通过域名和IP地址进行登录。这时候用域名登录就发现证书已经没有警告了。win+R 调出“运行”,输入mmc。connection2 同上。如果还有报错请重启一下服务器。打开connection1。可以把这个先删掉 没用。打开DC_01服务器。右键选择证书颁发机构。友好名称只能是vdm。重启之后就没有报错了。

送个祝福给小豪的博客 2960

c++求最大公约数/最小公倍数

c++求最大公约数/最小公倍数最大公约数辗转相除法辗转相减法最小公倍数 最大公约数 辗转相除法 int greatestCommonDivisor(int x,int y){ int z = y; while(x%y!=0) { z = x%y; x = y; y = z; } return z; } 辗转相减法 int greatestCommonDivisor(int x,int y){ while(x != y) { if(x>y) { x= x -

qq_33723648的博客 148

Amos实战:如何用Bootstrap法检验中介效应?附完整操作步骤

本文详细介绍了如何使用Amos软件通过Bootstrap法检验中介效应,包括模型设定、参数配置和结果解读。Bootstrap方法因其不依赖正态分布假设、统计功效高等优势,成为中介效应分析的首选方法。文章提供了完整的操作步骤和实用建议,帮助研究者准确评估变量间的中介作用机制。

zz67890的博客 1438

UNITY2022 Cardboard环境搭建

必须安装 Git,并且 git 可执行文件必须位于 PATH 环境变量中。考文档:https://developers.google.cn/cardboard/develop/unity/quickstart?转到 Assets/Samples/Google Cardboard//Hello Cardboard/Scenes/HelloCardboard 场景中。粘贴https://github.com/googlevr/cardboard-xr-plugin.git到文本输入字段中。

weixin_39510925的博客 1210

最大公约数求法

辗转相除 ..再记录一点  最大公约数和最小公倍数之积是原两数之积

° ﹎.- 看淡1.苆х. 1151

勇闯dify v1.0.0之设置模型供应商。解决:Reached maximum retries (3) for URL https://marketplace.dify.ai/

朋友们,大家好,今天带大家来勇闯dify v1.0.0。为什么叫勇闯呢?我就这么说吧,本来我昨天就想带大家勇闯v1.0.0的。但是dify的marketplace访问不了。公司的网和手机热点都试了,就是访问不了。我们连个模型都没有,还勇闯个球啊,对吧,就搁置了。今天,我赶紧看看这个marketplace好了没。一看,可以了。赶紧写下这篇博客,帮助同志们走出困境。

xiezhipu的博客 4616

辗转相除法、更相减损法、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万+

YOLOv11-seg 改进系列 | 引入原创 RSCD 重参数共享卷积分割头,增强 Head 表达力并压低计算量

本文提出一种改进的YOLOv11-seg分割头Segment_RSCD,通过重参数共享卷积增强表达能力。该模块在LSCD共享检测头基础上引入DiverseBranchBlock重参数卷积,保留三尺度预测与Proto掩码原型接口不变。相比原始Segment头,Segment_RSCD参数增加4%但计算量降低1.3%,在共享卷积结构中通过多分支补偿表达能力损失,同时利用Scale层保持尺度差异校准。该方法不改动Backbone/Neck结构,仅重构检测/分割头,实现训练期多路径聚合与部署期等效单分支的平衡。

qq_44224801的博客 181

手把手教你学Simulink实例--基于Simulink的电力电子系统电池管理系统(BMS)设计与仿真实例

本文详细介绍了基于Simulink的电池管理系统(BMS)设计与仿真全过程。首先阐述了BMS在安全防护、寿命延长和性能优化方面的必要性,分析了新能源汽车、光伏储能等典型应用场景的技术指标要求。接着详细讲解了Thevenin等效电路和多电平电池模型构建方法,并给出SOC估算、故障诊断等核心算法的MATLAB实现代码。通过设计正常充放电、过充保护等多场景仿真测试,验证了系统在SOC跟踪精度(误差<1.5%)和故障响应速度(<10ms)方面的优异性能。文章还提出了参数优化方法和未来AI融合、数字孪生等发展方向,提

xiaoheshang_123的博客 376

最大公约数的四种方法

求两数的最大公约数,一共有四种方法:暴力穷举法、更相减损法、辗转相除法、stein 算法,小女不才,花了几天的时间终于把这几种方法全部弄明白,现在就把它们全部分享出来。首先,假设被求的两个数为 x、y,且 x > y。最大公约数 d = gcd (x , y)

Hell_potato777的博客 1万+

常说的cache机制到底是什么?L1 cache和 L2 cache是什么?

一文带你迅速了解CPU内的cache机制!!图解多核CPU中的多级cache结构。为何有的处理器没有cache?

车载系统攻城狮 5875

C语言——实现并求出两个数的最大公约数

问题描述:求出两个数的最大公约数。

qq_68876674的博客 328

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

从键盘输入两个整数,利用 Python 编程求出这两个数的最大公约数。

本题代码纯粹从数学概念出发编写,效率没有“辗转相除法”高。

hnjzsyjyj的专栏 589

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

如何求出最大公约数?

写一段代码,求出两个整数的最大公约数,尽量优化算法的性能。 (1)暴力枚举: 从较小整数的一半开始,试图找到一个合适的整数 i,看看这个整数能否被 a 和 b 同时整除。 public static int getGreatestCommonDivisor(int a,int b){ int big = a > b ? a : b; int small = a < b ? a :b; if(big%small == 0){ return small; .

深海的鱼 700

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

输入两个数,并求出其最大公约数

/* *copyright(c)2013,烟台大学计算机学院 *ALL right reserved. *作者:王凯 *完成日期:2013年11月5日 *版本号:v1.0 *问题描述:输入两个数,并求出其最大公约数 *样例输入: *样例输出: *问题分析:并求出其最大公约数 */ #include using namespace std; //自定义

u012368962的专栏 1246

如何求出两个整数的最大公约数

前言 几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。例如:12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16)=4。12、15、18的最大公约数是3,记为(12,15,18)=3。 1.暴力枚举法 int get_greatest_common_divisorV1(int a, int b) { int big = a>b ? a : b; int small = a<b ? a...

m0_61198445的博客 5294

求出两个整数的最大公约数

计算两个整数的最大公约数(Greatest Common Divisor, GCD)时,常用的高效算法是欧几里得算法(Euclidean algorithm)。这个算法的基本思想是:对于两个正整数a和b(假设a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。递归地应用这个过程,直到余数为0,此时被除数就是两数的最大公约数。例如,计算48和18的最大公约数,输出将会是6。方法中,使用了递归的方式来实现欧几里得算法。写一段代码,求出两个整数的最大公约数,要尽量优化算法的性能。

没出过地球 2321

使用辗转的方法进行求出最大公约数

最大公约数 递归和分治 / 程序设计强化训练 空间限制:16MB时间限制:1s总提交数:384通过率:45.05%题目来源: Aqua贡献人: Aqua 请你用递归的方法,求出a和b的最大公约数 可能你以前都是用循环做的,这次请你尝试一下使用递归实现它 多组输入,EOF结束 每组输入一行,包含两个正整数a和b(a,b <= 32768) 对于每组输入,在新的一行输出结果 3 7 5 13 36 24 1 1 12 题目的编程来自于广东技术师范大学的在线判题系统,简称为OJ系统, 可以在网站里面进行敲代

走出那座山 367

如何用python求出两数的最大公约数

求最大公约数中九章算术的更相减损和阿基米德的辗转相除法的介绍。

R的博客 866

Java求出最大公约数

题目要求 从键盘输入两个数字,求他们的最大公约数 所用方法:辗转相除法 两种格式都没必要去刻意比较两个数字的大小再计算。如果a

小只.的博客 1787

Leetcode: 求出两个整数的最大公约数

该算法用到了几个定理,如下: 辗转相除法 辗转相除法又名欧几里得算法(Euclidean algorithm),目的是求出两个正整数的最大公约数。它是已知最古老的算法, 其可追溯至公元前300年前。 这条算法基于一个定理:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。比如10和25,25除以10商2余5,那么10和25的最大公约数,等同于1...

CodeBoy975 2402

高效率的求出最大公约数

暴力查找: public int getGreatestCommonDivisor(int a,int b){ int big = a>b ? a:b; int small = a<b ? a:b; if(big%small==0){ return small; } for(int i

二货 367

输入三个数,求出最大公约数

【代码】输入三个数,求出最大公约数。

ld15353133609的博客 661

第四周【递归求出两个数的最大公约数】

#include "iostream" using namespace std; int gcd(int x, int y); int main() { int m,n; cout<<"输入两个数字:"; cin>>m>>n; cout<<"这两个数的最大公约数为:"; cout<<gcd(m,n)<<endl; return 0; } int

ZHRhhh 438
上一篇: 如何用JAVA写一个ATM 自动取款机
下一篇: LeetCode 上第 771 号问题:宝石与石头
凌晨里的无聊人
博客等级 码龄8年 2320粉丝 206原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨里的无聊人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值