首页 > 编程语言 >python实现快速幂

python实现快速幂

时间:2024-07-19 20:56:07浏览次数:19  
标签:13 return python res fast 实现 ans 快速 mod

若需要计算a^b,如果使用循环来计算显然效率是很低的

以下有三种方法实现快速幂

方法一,python自带函数pow(a,b,mod),其中a为底数,b为指数,mod是对该数取模,mod参数有时候可以不传

a=pow(5,9)

方法二,利用递归实现快速幂,该方法需要注意分类讨论,考虑到指数为0,指数为1以及指数是奇数的情况

def fast_power(a,b,mod):
    if b==0:
        return 1%mod
    if b==1:
        return a%mod
    ans=fast_power2(a,b//2,mod)%mod
    ans=ans*ans
    if b%2==1:
        ans*=a%mod
    return ans%mod

方法三,利用指数的二进制,快速计算

如假设a=3,b=13 13的二进制是1101 所以3^13=3^8*3^4*3^1 相当于是看二进制哪一位是1 指数就是2的多少次方

def fast_power(a,b):
    res=1
    while b:
        if b&1:
            res*=a
        a=a*a
        b>>=1
    return res

标签:13,return,python,res,fast,实现,ans,快速,mod
From: https://blog.csdn.net/m0_74233882/article/details/140559317

相关文章

  • Python中turtle库效果展示
        前言    Python因其众多的第三方库而闻名,其中,用于绘制图形的turtle库由于其简单易用和方便性得到了广泛的青睐。笔者对此有些许兴趣,欲在后来的文章中对此展开学习,便先发布一篇预热文章,展现Python中使用turtle所能达到的效果如何。    内容概要......
  • Python入门知识点 4--格式化输出与运算符
    1、格式化输出name='小赵'age=18#print('大家好,我是'+name+'我今年'+age+'岁了')#字符串和整型不能拼接print('大家好,我是'+name+'我今年'+str(age)+'岁了')#把整型转换成字符串输出,但比较麻烦print('大家好,我是',name,'我今年',age,&#......
  • 为了Python换源,我开发了一个库「pipco 0.0.19」
    你好,我是悦创。有时候某个源又出问题,或者频繁切换源。我就想开发一个库可以切换的,链接:https://pypi.org/project/pipco/库是开源的,可以自行学习或者使用。使用方法:安装pipinstallpipco查看帮助pcohelp当你需要使用Python时,Pip是一个非常重要的工具,它用于安......
  • 堆排序的实现
    首先需要知道的是,如果想要对一个数组排升序,要建大堆,排降序,要建小堆。具体过程:(以排降序为例)1)建小堆;2)交换堆顶(第一个)和堆尾(最后一个)的数据;3)交换完后,最后一个数据不动,剩下的数据对堆顶元素进行向下调整;4)循环2)3)步骤。下面用图来展示一下过程:1)假设对数组arr[10]={3,1......
  • Python多任务编程的三种方式
    计算机的设计就是为了帮助人类或者模仿人类的某些行为。生活中的多任务:人可以一边唱歌,一边跳舞;人开车的时候是通过手、脚和眼睛共同配合来驾驶一辆车。多任务编程就是这样一个鲜明的例子,计算机也可以实现多任务编程:比如一边听歌一边玩游戏、打开浏览器上网同时能登录微信、QQ......
  • JavaScript实现通过按纽控制电梯上下移动,并实现帧频动画
    varapp=newPIXI.Application(520,460);document.body.appendChild(app.view);//创建背景varbg=newPIXI.Sprite.fromImage("res/lianxi/elevator/bg.png");app.stage.addChild(bg);varelevator=newPIXI.Sprite.fromImage("res/lianxi/elevator/dt......
  • 第4章.消费者领域中的模式实现
            我们在前几章中学习了重要的建筑模式;本章介绍了与消费者领域相关的这些模式的用例。尽管消费者领域存在许多用例(电子健康、老年护理、宠物追踪、能源管理、安全保障、机器人吸尘器等),但本章仅详细介绍两个用例——家庭自动化和智能煮蛋器——以透视实施消费者物......
  • 顺序表实现队列(c语言)
    队列概念篇图示代码篇1.队列的声明2.队列的创建3.队列的销毁4.队列扩容5.入列6.出列6.队首元素7.队列的元素个数完整代码运行结果建议你在看这篇文章先看一下顺序表知识。我在这里通过顺序表的写法实现先进先出的特征来实现队列。当然顺序表也可以实现栈,感......
  • 弹性伸缩:如何在Eureka中实现服务的自动扩展和收缩
    弹性伸缩:如何在Eureka中实现服务的自动扩展和收缩在微服务架构中,服务的自动扩展和收缩是实现高可用性和成本效益的关键策略。Eureka,作为Netflix开源的服务发现框架,虽然本身不直接提供自动扩展和收缩的功能,但我们可以通过一些策略和工具来实现。本文将详细解释如何在Eureka......
  • python+flask计算机毕业设计基于WEB技术的校园红歌曲库管理系统的设计与实现(程序+开题
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网的广泛普及,数字化管理已成为提升工作效率与服务质量的重要手段。在校园文化建设中,红歌作为传承红色文化、......