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

019快速幂算法 - O(log n)次乘法计算a^n

快速幂算法 - O(log n)次乘法计算a^n守护互联网的算法快速幂5W1H 发明者故事Who何人- 发明者是谁古代先驱印度数学家约公元前 200 年最早的二进制方法记录出现在印度数学文献中现代系统化Donald E. Knuth1938-在《计算机程序设计艺术》第二卷 4.6.3节全面分析了快速幂的各种变体密码学推广Fermat费马1607-1665费马小定理a^(p-1) ≡ 1 mod p是模快速幂的理论基础Euler欧拉1707-1783广义化为欧拉定理Rivest、Shamir、Adleman1977年RSA 加密中模快速幂是核心操作背景快速幂的核心思想——“反复平方”repeated squaring——古代中国、印度、阿拉伯数学家都独立发现过但系统化和计算机实现由 Knuth 完成。当时的处境从古代天文计算到现代密码学计算大幂次都是基础需求。直觉上计算 a^1000000 需要百万次乘法而二进制方法只需要约 20 次。When何时- 什么时候发明的时间线约公元前 200 年印度数学文献Pingala 的 Chandaḥśāstra中记录了二分法求幂的算法200 年中国《九章算术》中有类似思想1640 年Fermat 发表费马小定理为模快速幂奠定理论基础1969 年Knuth 在 TAOCP 第二卷中系统化了加法链Addition Chain和快速幂1977 年RSA 算法使模快速幂成为密码学的核心计算时代背景计算机出现前天文学家用对数表和手工计算指数运算是最耗时的操作之一计算机时代密码学的兴起使高效指数运算成为信息安全的基础Where何地- 在哪里发明的地点各时代各地印度次大陆最早的文献记录中国《九章算术》时代汉朝阿拉伯中世纪伊斯兰黄金时代的数学传播欧洲费马在图卢兹Toulouse从事法律工作的业余时间推导美国Knuth 在斯坦福大学系统化Rivest、Shamir、Adleman 在 MIT 发展密码学应用环境从古代寺庙的数学传统到现代大学实验室跨越数千年、多个文明。What何事- 发明了什么算法快速幂Fast Exponentiation / Binary Exponentiation / Repeated Squaring核心概念将指数 n 表示为二进制从高位到低位或低位到高位扫描每次对当前结果平方若当前二进制位为 1 则再乘以底数 a。就像计算 2^1313 1101₂ 8 4 1 计算过程从高位到低位 初始result 1 位18result 1² × 2 2 位14result 2² × 2 8 位02result 8² 64 位11result 64² × 2 8192 ✓关键突破O(log n) 次乘法n 的二进制位数模快速幂每步取模防止数字爆炸用于密码学矩阵快速幂同样思想适用于矩阵乘法Why何因- 为什么发明要解决的问题天文计算行星运动周期涉及大幂次的精确计算数论验证费马小定理验证需要计算 a^(p-1) mod p密码学RSA 的加解密是模快速幂如 m^e mod n多项式求值霍纳法则使用快速幂的思想当时的挑战古代全靠手工减少乘法次数直接减少计算时间现代虽然单次乘法很快但密码学中的数以千计的位数使 O(n) 方法仍然不可接受大整数结合 Karatsuba 乘法快速幂可以处理 2048 位的 RSA 运算动机任何时代指数运算都是计算中最费力的操作优化它的效率具有直接的实用价值。How何果- 如何实现有什么影响整数快速幂二进制右移方法longlongfast_pow(longlongbase,longlongexp){longlongresult1;while(exp0){if(exp1)result*base;// 若当前位为1base*base;// 平方exp1;// 处理下一位}returnresult;}模快速幂每步取模防止数字溢出longlongmod_pow(longlongbase,longlongexp,longlongmod){longlongresult1;base%mod;while(exp0){if(exp1)resultresult*base%mod;basebase*base%mod;exp1;}returnresult;}历史影响RSA、Diffie-Hellman、椭圆曲线密码学的核心运算所有编程语言的标准库Python pow()、Java BigInteger.modPow()计算机代数系统Mathematica、Maple的基础操作斐波那契数列的 O(log n) 计算矩阵快速幂图论中矩阵幂运算路径计数验证费马小定理若 p 为质数则对任意 aa 不是 p 的倍数a^(p-1) ≡ 1 (mod p)名言Knuth 在 TAOCP 中写道“快速幂是’分治’思想在算术中最纯粹的表达——把指数的问题分成两半逐步合并。”自然语言需求定义需求名称实现整数快速幂和模快速幂O(log n) 时间复杂度功能需求用精确的中文描述整数快速幂计算 base^exp不取模输入底数 baselong long指数 exp非负整数操作二进制右移逐位处理每步平方或平方后乘底数输出long long 结果注意可能溢出测试用小数模快速幂计算 base^exp mod m输入底数 base、指数 exp、模数 m均为 long long操作与整数快速幂相同但每步取模输出long long 结果范围 [0, m-1]费马小定理验证验证 a^(p-1) ≡ 1 (mod p)p 为质数输入a底数、p质数操作调用模快速幂输出true/false约束条件指数 exp 0非负整数模数 m 1base^2 * result 2^63模快速幂每步乘法前保证不溢出 long longexp0 时结果为 1任何数的零次幂为1验收标准必须可验证编号测试场景自然语言描述预期结果验证方式12^101024直接比较23^01零次幂直接比较31^10000001直接比较4模快速幂2^10 mod 10024直接比较5费马小定理2^(p-1) mod p 1p9971模快速幂验证6费马小定理3^(p-1) mod p 1p1047291模快速幂验证73^20 精确值3486784401直接比较需 unsigned long longAI 生成提示基于以上需求和验收标准用标准C语言实现快速幂算法。 要求 1. 使用标准C99 2. fast_pow(base, exp) → unsigned long long整数快速幂 3. mod_pow(base, exp, mod) → long long模快速幂 4. 注意mod_pow 中 base 和 result 在乘法前先取模防止溢出 5. 在main中实现全部7个验收标准 6. 测试通过输出 ✓ 测试X通过失败输出 ✗ 测试X失败 核心函数 - fast_pow(base, exp) - 整数快速幂 - mod_pow(base, exp, mod) - 模快速幂防溢出 - fermat_test(a, p) - 费马小定理验证C语言实现文件对应文件:fast_exponentiation.c编译运行:gcc-stdc99-Wall-ofast_exp_test fast_exponentiation.c ./fast_exp_test核心函数:fast_pow(base, exp)- 整数快速幂O(log exp)mod_pow(base, exp, mod)- 模快速幂防溢出fermat_test(a, p)- 费马小定理验证

相关文章:

019快速幂算法 - O(log n)次乘法计算a^n

快速幂算法 - O(log n)次乘法计算a^n 守护互联网的算法:快速幂5W1H 发明者故事 Who(何人)- 发明者是谁? 古代先驱:印度数学家(约公元前 200 年),最早的"二进制方法"记录…...

企业级AI应用开发:基于HPInc/AI-Blueprints的标准化与工程化实践

1. 项目概述:当企业级AI开发遇上“蓝图”如果你在大型企业或有一定规模的团队里负责过AI项目的落地,大概率经历过这样的场景:一个业务部门提出了一个智能客服的需求,开发团队吭哧吭哧从零开始搭环境、选模型、写接口、做部署&…...

5步攻克ComfyUI-Manager部署难题:AI工作流管理的智能革命

5步攻克ComfyUI-Manager部署难题:AI工作流管理的智能革命 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various cu…...

自建搜索代理实践:基于Nginx与FastAPI构建聚合搜索系统

1. 项目概述:一个自建搜索代理的实践最近在折腾一个挺有意思的东西,我把它叫做“MySearch-Proxy”。这个名字听起来可能有点技术范儿,但说白了,它的核心目标很简单:在现有的网络环境下,为自己搭建一个更干净…...

从Tomcat到Redis:用Vulfocus编排一个多层内网靶场,复盘真实渗透路径

从Tomcat到Redis:构建多层内网靶场的渗透实战指南 在网络安全领域,靶场环境的重要性不亚于真实战场上的演习场。一个精心设计的靶场能够模拟复杂的企业内网环境,让安全从业者在零风险的情况下磨练渗透测试技能。本文将带你深入探索如何利用Vu…...

用R语言SetMethods包处理面板数据QCA:从数据校准到结果可视化的完整流程

用R语言SetMethods包处理面板数据QCA:从数据校准到结果可视化的完整流程 社会科学研究中的面板数据分析常常面临复杂因果关系的挑战。定性比较分析(QCA)方法因其能够处理多因素组合效应而备受青睐,而R语言中的SetMethods包则为面板数据QCA提供了强大支持…...

告别重建烦恼:用Cuckoo Filter(布谷鸟过滤器)为你的LSM-Tree引擎减负

LSM-Tree存储引擎的救星:Cuckoo Filter深度优化实践 在数据库内核开发领域,LSM-Tree(Log-Structured Merge-Tree)已经成为现代存储引擎的事实标准架构。从LevelDB到RocksDB,从Cassandra到ScyllaDB,这种基于…...

别再让系统更新坑了你!Ubuntu 20.04双系统下V100/3090显卡驱动稳定安装保姆级指南

双系统环境下Ubuntu 20.04的NVIDIA显卡驱动终极稳定方案 每次系统更新后显卡驱动崩溃的绝望,只有经历过的人才能体会。当你在深夜赶论文最后期限,或是训练了三天三夜的深度学习模型即将完成时,一个不经意的系统更新提示可能毁掉一切。本文将彻…...

VisualCppRedist AIO:Windows系统必备的Visual C++运行库完整解决方案

VisualCppRedist AIO:Windows系统必备的Visual C运行库完整解决方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是Windows系…...

如何在Chrome浏览器中实现终极Markdown阅读体验?markdownReader完整指南

如何在Chrome浏览器中实现终极Markdown阅读体验?markdownReader完整指南 【免费下载链接】markdownReader markdownReader is a extention for chrome, used for reading markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdownReader 你是否…...

新手轻松学i2c:基于快马生成arduino主从通信完整示例与详解

今天想和大家分享一个特别适合嵌入式新手的I2C通信入门实践。作为一个刚接触I2C协议时被各种专业术语绕晕的过来人,我发现在InsCode(快马)平台上通过实际代码示例学习效果特别好。下面就用Arduino主从机通信的例子,带大家轻松理解I2C的核心要点。 I2C协议…...

AI编码助手规则管理工具cursor-rules:统一管理Cursor与Copilot的编码规范

1. 项目概述:一个管理AI编码助手的规则引擎 如果你和我一样,在日常开发中重度依赖Cursor、GitHub Copilot这类AI编码助手,那你一定遇到过这样的困境:好不容易在某个项目里调教出一套好用的规则(比如“React组件必须用…...

别再只会setStyleSheet了!Qt实现背景透明的5种方法实测与避坑指南

别再只会setStyleSheet了!Qt实现背景透明的5种方法实测与避坑指南 在开发现代桌面应用时,透明效果已经成为提升用户体验的重要设计元素。无论是悬浮工具窗口、HUD界面还是需要融入系统环境的特殊应用,背景透明都是实现这些效果的关键技术。作…...

STM32CubeIDE隐藏技能Get:如何把别人调好的CubeMX配置(.ioc)变成你自己的开发起点?

STM32CubeIDE隐藏技能:高效复用他人CubeMX配置的实战指南 当你在GitHub上发现一个完美的传感器驱动项目,或是同事分享了一个经过验证的通信协议实现,那个神秘的.ioc文件里藏着多少可以复用的智慧?本文将带你超越基础操作&#xff…...

2026 私域直播系统排行:零售企业更该先看谁能接住交易

一句话结论:2026 年私域直播系统排行如果按零售适配度来排,不能只看谁会开播,更要看谁能把订单、履约、门店提货和复购接住。对连锁零售、社区零售、生鲜预售这类场景来说,悦邻更值得优先评估。先说结论很多老板搜“2026 私域直播…...

ComfyUI Manager终极指南:AI绘画插件的智能管家

ComfyUI Manager终极指南:AI绘画插件的智能管家 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom node…...

AegisAI:为AI编程助手构建人机协同安全授权系统

1. 项目概述:为AI助手戴上“紧箍咒”如果你和我一样,深度依赖Cursor、Windsurf这类AI编程助手来提升开发效率,那你一定也经历过那种“心惊肉跳”的时刻:AI助手在理解了你的需求后,自信满满地敲下了一行rm -rf ./build或…...

【具身智能】最大的微信群!

点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达具身智能:人工智能的下一个浪潮!今年再次被写入《政府工作报告》中,已经成为国家未来重点培育产业。市场方面,具身智能近一年融资更是爆火&…...

Git基本使用 使用Git管理IDEA项目

目录Gitee的注册和代码提交(附有下载链接)Git的基本原理如何查看配置创建一个本地仓库 并用git管理它新建本地库git initadd添加到暂存区commit提交到本地库修改了文件 如何再次commit查看历史版本回退历史版本克隆远程仓库Gitee的项目到本地查看文件状态.gitignore忽略文件拉取…...

Cortex-R82处理器RAS架构设计与错误处理机制详解

1. Cortex-R82处理器RAS架构设计理念在现代嵌入式系统中,处理器可靠性直接关系到整个系统的稳定性。Cortex-R82作为面向高可靠性场景设计的处理器,其RAS(Reliability, Availability, Serviceability)扩展架构体现了三个核心设计理念:首先&…...

Mac(M1/M2)安卓模拟器不止能跑App:手把手教你配置ADB并连接真机调试

Mac(M1/M2)安卓模拟器不止能跑App:手把手教你配置ADB并连接真机调试 在Mac平台上进行Android应用开发时,模拟器只是起点。真正高效的开发流程需要打通模拟器与真机之间的调试通道,而ADB(Android Debug Bri…...

卷积层

目录 1.卷积运算 2.步幅(stride) 3.边界效应 (Padding) 4.多个输入通道 5.多个输出通道 6.卷积层 1.卷积运算 卷积层由卷积运算和激活函数组成。卷积运算基于一个局部的线性模型,这个线性模型会重复地应用在图像的各个不同的位置上。卷…...

Docker 27轻量化避坑手册:92%开发者忽略的3个cgroupv2陷阱与4个buildkit隐藏开关

更多请点击: https://intelliparadigm.com 第一章:Docker 27边缘容器极致轻量化全景认知 Docker 27(代号“EdgeLight”)标志着容器运行时在资源约束型边缘场景下的范式跃迁。它通过重构镜像分发协议、引入无状态运行时沙箱&#…...

百度网盘秒传链接提取脚本:5分钟掌握永久分享文件的终极指南

百度网盘秒传链接提取脚本:5分钟掌握永久分享文件的终极指南 【免费下载链接】rapid-upload-userscript-doc 秒传链接提取脚本 - 文档&教程 项目地址: https://gitcode.com/gh_mirrors/ra/rapid-upload-userscript-doc 你是否经常遇到百度网盘分享链接失…...

机器学习-第五章 决策树

第五章 决策树 目录 1.决策树简介 2.ID3决策树 3.C4.5决策树 4.CART决策树 5.案例泰坦尼克号生存预测 6.CART回归树 7.决策树 剪枝 2-信息增益 3-信息增益率 4- GiNi 基尼值 6-和传统回归的区别 4.5-掌握 2346-面试了解 1 、决策树简介 一、生活中的决策树 二、决策树是一…...

斯坦福小镇AI的‘记忆宫殿’如何炼成?深入剖析Generative Agents的记忆与反思机制

斯坦福小镇AI的‘记忆宫殿’如何炼成?深度解析Generative Agents的记忆与反思架构 在虚拟小镇里,AI角色Klaus每天早晨7点准时煮咖啡,9点前往实验室与同事讨论量子计算,下午5点则会在酒吧偶遇同样热爱科研的Maria——这些看似自然的…...

2026硬核教程:Gemini3.1Pro一键搞定Excel数据清洗

Excel 清洗这活儿,最折磨人的从来不是“不会”,而是:脏数据太多、规则太散、清洗后还要反复核验。你以为只是删除空值/去重一下,结果每次口径稍有变化,输出就对不上;或者清洗步骤写成了“凭经验操作”&…...

轻松下载在线视频:VideoDownloadHelper完整使用指南

轻松下载在线视频:VideoDownloadHelper完整使用指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 对于经常需要保存在线视频内容…...

手把手教你用PyTorch和torchmetrics跑通图像质量评估(从安装到实战代码解读)

从零开始掌握PyTorch图像质量评估实战:PSNR/SSIM/LPIPS全流程详解 在计算机视觉和图像处理领域,如何量化评估生成图像的质量一直是个核心问题。无论是比较不同算法的输出效果,还是调试自己的模型参数,我们都需要可靠的指标来客观衡…...

蓝牙5.3到底升级了啥?手把手教你为IoT设备选型避坑

蓝牙5.3技术解析与IoT设备选型实战指南 在智能家居和可穿戴设备爆发的今天,蓝牙技术作为物联网连接的基石正在经历关键迭代。当工程师面对琳琅满目的蓝牙模组时,5.3版本带来的底层革新往往被参数表所掩盖。本文将拆解那些真正影响设备性能的技术细节——…...