当前位置: 首页 > news >正文

cryptohack-challenge-General-Greatest Common Divisor

题目描述

最大公约数(GCD),有时称为最大公因数,是除以两个正整数的最大数(A,B).
对于a=12,b=8我们可以计算 的除子a:{1,2,3,4,6,12}{ 1,2,3,4,6,12 }以及 的除子b:{1,2,4,8{ 1,2,4,8 }.比较这两者,我们看到GCD(A,B)=4.
现在想象我们取a=11,b=17.两者兼具a以及b是质数。作为素数,只有自身和1作为除子,总共音乐节⁡GCD(A,B)=1.
对于任意两个整数,我们都这样说a,bA,B,如果GCD(A,B)=1a以及b是互质整数。
如果a以及b是素数,它们也是互质。如果a是素数,且b<aa以及b互质。
有许多工具可以计算两个整数的最大公约分差,但为此我们建议查阅欧几里得算法。
试着写代码;就几句话而已。用途a=12,b=8去测试它。
现在计算GCD(A,B)对于a=66528,b=52920请在下方输入。

计算两个正整数的最大公约数(GCD, Greatest Common Divisor)。

测试用例:

gcd(12, 8) = 4

gcd(11, 17) = 1 (互质)

题目要求:

计算 gcd(66528, 52920)

欧几里得算法原理

欧几里得算法(Euclidean Algorithm)是计算GCD的经典算法,基于以下原理:

gcd(a, b) = gcd(b, a mod b)

递归直到 b = 0,此时 gcd(a, 0) = a

```

算法步骤:

1. 若 b = 0,返回 a

2. 否则计算 gcd(b, a mod b)

解题代码

方法一:递归实现

```python def gcd_recursive(a, b): """递归实现欧几里得算法""" if b == 0: return a return gcd_recursive(b, a % b) # 测试 print(f"gcd(12, 8) = {gcd_recursive(12, 8)}") # 输出: 4 print(f"gcd(66528, 52920) = {gcd_recursive(66528, 52920)}") ```

方法二:循环实现(推荐)

```python def gcd_iterative(a, b): """循环实现欧几里得算法""" while b: a, b = b, a % b return a # 测试 print(f"gcd(12, 8) = {gcd_iterative(12, 8)}") # 输出: 4 print(f"gcd(66528, 52920) = {gcd_iterative(66528, 52920)}") ```

方法三:Python内置函数

```python import math # 使用math.gcd() print(f"gcd(12, 8) = {math.gcd(12, 8)}") # 输出: 4 print(f"gcd(66528, 52920) = {math.gcd(66528, 52920)}") ```

解题过程

逐步计算 gcd(66528, 52920):

gcd(66528, 52920)

66528 mod 52920 = 13608

gcd(52920, 13608)

52920 mod 13608 = 12096

gcd(13608, 12096)

13608 mod 12096 = 1512

gcd(12096, 1512)

12096 mod 1512 = 0

gcd(1512, 0) = 1512

答案:

gcd(66528, 52920) = 1512

完整解题脚本

```python #!/usr/bin/env python3 """ CTF密码学挑战:最大公约数(GCD)计算 题目:计算gcd(66528, 52920) """ def gcd(a, b): """欧几里得算法计算最大公约数""" while b: a, b = b, a % b return a # 测试验证 test_cases = [(12, 8),(11, 17),(66528, 52920)] for a, b in test_cases: result = gcd(a, b) print(f"gcd({a}, {b}) = {result}") ``` **运行结果:** ``` gcd(12, 8) = 4 gcd(11, 17) = 1 gcd(66528, 52920) = 1512 ```

算法复杂度分析

时间复杂度:O(log min(a, b))

空间复杂度:O(1) (循环实现) / O(log min(a, b)) (递归实现)

欧几里得算法非常高效,即使处理大整数也能快速完成。

应用场景

在密码学中,GCD计算用于:

RSA密钥生成(找互质数)

模运算逆元计算

公钥密码学基础运算

Flag:1512

关键点:

欧几里得算法:gcd(a, b) = gcd(b, a % b)

递归终止条件:b = 0时返回a

Python内置math.gcd()可直接使用

http://www.jsqmd.com/news/1158598/

相关文章:

  • 软件安装原理与排查:从学习版技术分析到合法开发环境搭建
  • 阿姆智创EPC-1761H嵌入式一体机,落地高铁闸机项目
  • 拒绝数据孤岛:基于全域数据整合与多主体模型构建 CDP 架构实践
  • 2026衢州正规漏水检测维修权威推荐-卫生间漏水免砸砖维修/厨房阳台墙面暗管漏水检测/屋顶外墙堵漏维修-防水补漏公司实测口碑榜推荐 - 即刻修防水
  • 语言引导的视觉预训练模型空间感知增强技术解析
  • 【大数据课程设计/毕业设计】基于 Django 的地域听歌偏好大数据分析系统的设计与实现 基于 Django 的音乐资源数据运维管理系统【附源码、数据库、万字文档】
  • 2026年7月临淄烧烤/淄博烧烤店哪家烟火气浓_淄博蒙恩餐饮管理有限公司 - 品牌宣传支持者
  • 如何彻底掌控惠普暗影精灵性能:OmenSuperHub开源控制工具完整指南
  • Dify实战指南:从零构建企业级AI工作流与知识库应用
  • KUKA 后台程序 SPS 与 PLC 中断对比:24ms 周期监控 vs 即时响应
  • gdal_translate报错:ERROR 1: Invalid dataset dimensions : 0 x 0、计算瓦片数量
  • 机器学习模型生产化实战:FastAPI+Docker+K8s工程化落地
  • 数据库CPU飙升90%紧急排查:从SQL执行计划到系统资源的系统性诊断
  • 软考高项整合管理7过程实战:从章程到收尾的3个关键决策点与避坑指南
  • 九科信息企业级Agent,打通企业全链路智能自动化
  • 嵌入式串口电平不匹配排查:实测模组1.8V与MCU 2.31V阈值导致数据丢失
  • 无源高通滤波器 3 大常见误区:从 RC 选型到方波响应失真分析
  • STM32F103 USB HID 鼠标实战:CubeMX 配置 4 字节数据协议与 15ms 按键延迟
  • 2026年7月玻璃钢防爆防腐风机/陕西玻璃钢防爆防腐风机生产商推荐名单_陕西锐博优通风设备有限公司 - 行业平台推荐
  • Go 1.22.2 跨平台编译实战:Windows 生成 Linux/Mac 可执行文件的 4 步配置
  • M1卡控制字节 FF 07 80 69 权限解析:从16进制到3种数据块操作权限详解
  • 如何用douyin-downloader轻松实现抖音批量下载:5个步骤搞定素材收集难题
  • LingBot-Depth 2.0:深度感知从测量到理解的质变,误差减半背后的边界结构预训练
  • cmake项目使用导入静态库的方式添加源文件
  • Cobalt Strike 4.8监听器配置进阶:从核心原理到实战避坑指南
  • 同步FIFO设计对比:单口RAM方案 vs 双口RAM方案,资源与性能实测
  • 无源 vs 有源高通滤波器:5 个关键指标对比与 2 个典型应用场景选择
  • MAXON麦克森S390系列燃烧控制器——工业燃烧安全与效率的守护者
  • 美度官方售后服务中心地址电话实地考察报告_多信源验证(2026年7月更新) - 亨得利官方服务中心
  • 亲身到店探访杭州亨得利官方名表服务中心|完整地址及服务热线(2026年7月更新) - 亨得利官方