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

密码学算法 - 连分数算法

当你在计算某个数的近似值时或者在求解某个方程的根时连分数算法 就像一把神奇的放大镜能帮你逐步逼近那个隐藏在数字背后的真相。欢迎来到《密码学核心算法实战》的连分数专题这里没有纸上谈兵的理论空谈真的不画大饼只有一把把能直接撬动数据安全的精密齿轮⚙️。连分数算法的操作 这个算法可以直接将一个有理数或者无理数直接表示成一个连分数形式当然因为这个算法的原理十分简单所以就不单独拿出来讲了直接进入正题输入一个实数x xx。令i 0 i 0i0x 0 x x_0 xx0​x令a i a_iai​为x i x_ixi​的整数部分b i x i − a i b_i x_i - a_ibi​xi​−ai​如果b i 0 b_i 0bi​0则算法结束如果b i ≠ 0 b_i \neq 0bi​0则令x i 1 1 b i x_{i1} \frac{1}{b_i}xi1​bi​1​i i 1 i i 1ii1回到步骤 1输出连分数的部分商a 0 , a 1 , a 2 , … a_0, a_1, a_2, \ldotsa0​,a1​,a2​,…即x [ a 0 , a 1 , a 2 , … ] x [a_0, a_1, a_2, \ldots]x[a0​,a1​,a2​,…]。反过来x [ a 0 , a 1 , a 2 , … ] x [a_0, a_1, a_2, \ldots]x[a0​,a1​,a2​,…]也可以通过递推关系来计算出x xx的近似值。设x n [ a 0 , a 1 , … , a n ] x_n [a_0, a_1, \ldots, a_n]xn​[a0​,a1​,…,an​]则有递推关系p n a n p n − 1 p n − 2 q n a n q n − 1 q n − 2 \begin{align*} p_n a_n p_{n-1} p_{n-2} \\ q_n a_n q_{n-1} q_{n-2} \end{align*}pn​qn​​an​pn−1​pn−2​an​qn−1​qn−2​​其中p n p_npn​和q n q_nqn​分别是x n x_nxn​的分子和分母。最终x n p n q n x_n \frac{p_n}{q_n}xn​qn​pn​​就是x xx的一个近似值。连分数算法的实现 下面是一个 Python 实现的连分数算法defcontinued_fraction(x,max_iterations100):a[]for_inrange(max_iterations):aiint(x)a.append(ai)x-aiifx0:breakx1/xreturnadefcontinued_fraction_convergents(coeffs): 用递推公式计算连分数 [a0,a1,...an] 的所有渐进分数 参数 coeffs: 连分数部分商列表 [a0,a1,a2,...] 返回 list: 每个元素是 (n, p_n, q_n, x_n)包含每一步的递推结果 ifnotcoeffs:raiseValueError(连分数系数列表不能为空)p_prev_prev0# p_{-2}p_prev1# p_{-1}q_prev_prev1# q_{-2}q_prev0# q_{-1}convergents[]# 存储每一步的渐进分数forn,a_ninenumerate(coeffs):# 递推计算 p_n 和 q_np_na_n*p_prevp_prev_prev q_na_n*q_prevq_prev_prev# 计算当前渐进分数 x_n p_n/q_nx_np_n/q_n# 保存结果n从0开始convergents.append((n,p_n,q_n,x_n))# 更新前两项为下一次递推做准备p_prev_prev,p_prevp_prev,p_n q_prev_prev,q_prevq_prev,q_nreturnconvergentsSageMath 偷懒 有同学说“博主博主你的算法确实很厉害但是还是太吃操作了有没有更加简单无脑的用法”有的兄弟有的这样的算法在 SageMath 中早就已经被封装好了我们直接调用就行了fromsage.allimportcontinued_fraction# 这个 continued_fraction 函数既可以计算连分数的部分商也可以计算连分数的渐进分数具体用法如下# 计算连分数部分商coeffscontinued_fraction(x)# 计算连分数的渐进分数convergentscontinued_fraction(coeffs)怎么样是不是非常简单我的个人blogAlice and Bobの神秘小屋

相关文章:

密码学算法 - 连分数算法

当你在计算某个数的近似值时🔍,或者在求解某个方程的根时🧮,连分数算法 就像一把神奇的放大镜🔎,能帮你逐步逼近那个隐藏在数字背后的真相。 欢迎来到《密码学核心算法实战》的连分数专题!这里…...

Linux内核构建三要素:Makefile、Kconfig与.config协同机制

1. Linux内核构建系统核心机制解析:Makefile、Kconfig与.config的协同关系在嵌入式Linux开发实践中,内核编译常被视为一道技术门槛。开发者面对庞大的源码树(以Linux-3.4.2为例,包含超过2.5万文件),往往陷入…...

DIY四足机器人入门:用开源项目打造你的第一个仿生机器狗

DIY四足机器人入门:用开源项目打造你的第一个仿生机器狗 四足机器人正从实验室走向创客空间。想象一下,周末午后在自家工作台上组装出一台能行走、奔跑甚至跳舞的机器狗——这不再是科幻场景。得益于MIT Mini Cheetah等开源项目的出现,普通爱…...

HAR实战指南:从Kinetics-400数据集获取到视频帧预处理全流程解析

1. Kinetics-400数据集入门指南 第一次接触Kinetics-400数据集时,我被它庞大的规模震撼到了。这个包含40万段视频片段的数据集,涵盖了从"打篮球"到"刷牙"等400种日常动作,是训练人体动作识别(HAR)模型的黄金标准。但随之…...

通义千问3-Reranker-0.6B模型压缩:基于TensorRT的推理加速

通义千问3-Reranker-0.6B模型压缩:基于TensorRT的推理加速 1. 为什么需要对Qwen3-Reranker做TensorRT优化 你可能已经试过直接加载Qwen3-Reranker-0.6B跑重排序任务,但很快会发现:推理速度不够快,显存占用偏高,尤其在…...

2026年AI提示词(Prompt)终极指南:国内聚合站实战技巧

在AI应用日益深入的2026年,能否写出高质量的提示词(Prompt),直接决定了你从GPT、Claude、Gemini等大模型中获得价值的效率与深度。对于国内用户,学习和实践提示词工程的最佳平台是聚合型AI镜像站。目前,通过…...

大模型学习笔记------SAM模型架构拆解与实战指南

1. SAM模型架构全景拆解 第一次接触SAM模型时,我被它"分割一切"的野心震撼到了。这就像给计算机视觉领域扔下了一颗原子弹——传统需要专门训练的分割任务,现在通过提示词就能实时完成。在实际部署医疗影像标注系统时,我发现理解这…...

读了Linux内核slab源码,发现Linus在20年前就写出了比std::pmr更高效的内存池——内核内存管理的4个设计模式

一、C++的内存池,和内核比差在哪? C++程序员对内存管理不陌生。从最基本的new/delete,到C++17引入的std::pmr::polymorphic_allocator,再到各种第三方库的对象池实现,我们一直在和内存分配器打交道。 但你有没有想过一个问题:为什么C++标准库直到2017年才搞出std::pmr这…...

Dify + Celery + Webhook深度集成:构建高可靠异步管道的6大关键配置点

第一章:Dify自定义节点异步处理的核心架构演进Dify 自 v0.6.10 起将自定义节点(Custom Node)的执行模型从同步阻塞式全面转向基于事件驱动的异步处理架构,其核心目标是解耦节点执行与工作流调度,提升高并发场景下的资源…...

JTAG接口原理、失效诊断与硬件防护实战指南

1. JTAG接口原理与工程实践深度解析在嵌入式系统与可编程逻辑器件的开发流程中,JTAG(Joint Test Action Group)接口不仅是调试与烧录的核心通道,更是硬件工程师验证设计完整性、定位物理层故障的关键工具。本文基于FPGA开发中频繁…...

STM32电机控制库5.4版:开源无感驱动注释详解——从寄存器设置到弱磁控制策略实现

STM32电机库5.4开源无感注释 KEIL工程文件 辅助理解ST库 寄存器设置AD TIM1 龙贝格PLL 前馈控制 弱磁控制 foc的基本流 svpwm占空比计算方法 斜坡启动 死区补偿 有详细的注释, 当前是无传感器版本龙贝格观测,三电阻双AD采样!搞STM32电机控制就像在玩硬件…...

高效掌握SeisUnix:从架构解析到实战应用

高效掌握SeisUnix:从架构解析到实战应用 【免费下载链接】SeisUnix The CWP/SU: Seismic Un*x Package - a free open seismic processing, research, and educational software package. Please seek distribution gzipped tar files at https://wiki.Seismic-Unix…...

Windows任务栏美化:TranslucentTB打造个性化视觉体验

Windows任务栏美化:TranslucentTB打造个性化视觉体验 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 在Windows桌面个性化领域…...

嵌入式可观测性库:面向教学的轻量级实时调试方案

Elec350_OBS:面向嵌入式教学的实时观测与调试库深度解析1. 项目概述Elec350_OBS 是为加拿大麦吉尔大学(McGill University)ELEC 350 ——《嵌入式系统设计导论》课程配套开发的轻量级观测(Observability)支持库。该库并…...

C语言实现OTA安全降级与故障隔离:3层状态持久化+2次幂回退重试,让固件升级不再“一失足成千古恨”

第一章:C语言OTA升级失败处理的总体设计哲学在资源受限的嵌入式系统中,C语言实现的OTA升级失败处理并非简单的错误重试逻辑,而是一种以**确定性、可回滚性与状态自明性**为核心的系统级设计哲学。它要求每个操作步骤都具备原子边界&#xff0…...

Mos:3大核心技术彻底解决macOS鼠标滚动的终极体验难题

Mos:3大核心技术彻底解决macOS鼠标滚动的终极体验难题 【免费下载链接】Mos 一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A lightweight tool used to smooth scrolling and set scroll direction independently f…...

OpenClaw技能扩展:GLM-4.7-Flash加持的微信公众号排版

OpenClaw技能扩展:GLM-4.7-Flash加持的微信公众号排版 1. 为什么需要自动化公众号排版 每次在微信公众号后台手动调整格式的经历,都让我想起被Word排版支配的恐惧。图片尺寸不统一、行间距忽大忽小、代码块显示错位——这些琐碎问题消耗了我大量本可用…...

告别低效!用Postman Runner批量执行API,让8000条数据自动流转

1. 从手工操作到批量执行的效率革命 上周我接手了一个数据迁移项目,需要将8000多条用户记录通过API推送到新系统。刚开始我手动调用了十几条就发现不对劲——每次点击发送、等待响应、核对结果要花20秒,按这个速度完成全部操作需要连续工作44小时&#…...

KubeVirt + GPU Operator实战:如何在K8s集群中同时管理容器和虚拟机的GPU资源(24.9.0版)

KubeVirt GPU Operator深度实战:混合编排GPU资源的终极指南 混合GPU工作负载管理的挑战与机遇 在当今云原生与AI融合的技术浪潮中,基础设施团队面临着一个关键挑战:如何在统一的Kubernetes平台上同时高效管理容器化AI训练任务和需要GPU强隔离…...

Petduino:面向教育的Arduino兼容嵌入式宠物平台

1. 项目概述Petduino 是一款面向教育与创意硬件开发的 Arduino 兼容嵌入式平台,其核心价值不在于高性能计算,而在于以极简抽象封装复杂外设交互逻辑,使初学者与原型开发者能快速构建具备视觉反馈、音频输出与物理交互能力的“有生命感”的嵌入…...

Realistic Vision V5.1效果实测:毛衣丝绸牛仔布,各种材质渲染太逼真

Realistic Vision V5.1效果实测:毛衣丝绸牛仔布,各种材质渲染太逼真 1. 引言:重新定义AI生成的真实感 作为一名长期关注AI图像生成技术的从业者,我见过太多号称"写实"的模型,但大多数作品在细节处总会露出…...

IntelliJ IDEA 2023.2性能分析神器:编辑器内性能提示实战指南(含单测与服务场景)

IntelliJ IDEA 2023.2性能分析神器:编辑器内性能提示实战指南(含单测与服务场景) 在当今快节奏的软件开发环境中,性能问题往往成为项目后期最棘手的挑战之一。传统上,开发者需要依赖专门的性能分析工具或等到系统上线后…...

Dify节点异步能力升级迫在眉睫!3大信号预示你正面临任务积压危机——附实时监控看板配置清单

第一章:Dify节点异步能力升级迫在眉睫!3大信号预示你正面临任务积压危机——附实时监控看板配置清单 当你的 Dify 工作流开始出现响应延迟、任务队列持续增长、或 Web UI 中频繁显示“Processing…”却长时间无结果时,这并非偶然——而是异步…...

Java+ElasticSearch+Pytorch实战:手把手教你搭建一个简易版Google以图搜图系统

JavaElasticSearchPyTorch实战:构建高精度以图搜图系统 从图像特征到相似度搜索的技术实现 在数字内容爆炸式增长的时代,图像搜索技术正成为提升用户体验的关键。不同于传统的关键词搜索,以图搜图系统能够直接理解图像内容,为用户…...

nlp_structbert_sentence-similarity_chinese-large快速入门:Python调用与相似度计算实战

nlp_structbert_sentence-similarity_chinese-large快速入门:Python调用与相似度计算实战 你是不是经常遇到这样的问题:想判断两句话是不是一个意思,或者想从一堆文本里找出意思相近的句子?比如,用户问“怎么开通会员…...

Ext2Read:3步实现Windows高效访问Linux分区的终极解决方案

Ext2Read:3步实现Windows高效访问Linux分区的终极解决方案 【免费下载链接】ext2read A Windows Application to read and copy Ext2/Ext3/Ext4 (With LVM) Partitions from Windows. 项目地址: https://gitcode.com/gh_mirrors/ex/ext2read 还在为Windows系…...

嵌入式霍尔传感器转速测量库设计与实现

1. 项目概述RPM库是一个面向嵌入式平台的轻量级转速测量驱动,专为GEL2474霍尔效应速度传感器设计。该传感器广泛应用于电机控制、车轮转速检测、工业旋转设备监控等场景,其输出为标准的方波脉冲信号,频率与被测物体的旋转速度(RPM…...

OpenClaw+QwQ-32B:打造个性化智能写作助手

OpenClawQwQ-32B:打造个性化智能写作助手 1. 为什么需要本地化写作助手 去年我开始运营技术博客时,每天要花3小时在资料收集和内容打磨上。最痛苦的是在不同工具间切换:浏览器查资料、文档整理素材、编辑器写初稿、语法检查工具润色。直到发…...

Qwen3-4B-Instruct-2507问题解决:部署常见错误与快速排查方法

Qwen3-4B-Instruct-2507问题解决:部署常见错误与快速排查方法 1. 部署准备与环境检查 1.1 硬件要求确认 Qwen3-4B-Instruct-2507作为40亿参数规模的轻量级大模型,对硬件环境有特定要求: 显卡要求:最低需要NVIDIA RTX 4090D&am…...

手把手教你用Qwen3-TTS:Web界面操作,小白也能快速上手

手把手教你用Qwen3-TTS:Web界面操作,小白也能快速上手 1. 准备工作:3分钟快速部署 在开始使用Qwen3-TTS之前,我们需要先完成简单的环境准备。整个过程就像安装手机APP一样简单,跟着步骤走不会出错。 1.1 确认系统要…...