一、辗转相除法

1、简介

辗转相除法又叫欧几里得算法

假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:

1997 / 615 = 3 (余 152)

615 / 152 = 4(余7)

152 / 7 = 21(余5)

7 / 5 = 1 (余2)

5 / 2 = 2 (余1)

2 / 1 = 2 (余0)

至此,最大公约数为1

以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。

2、代码

#include<stdio.h>int gcd(int a, int b) {int t;while(b!=0) {t=a%b;a=b;b=t;}return a;
}

二、更相减损术

1、简介

更相减损术是出自《九章算术》的一种求最大公约数的算法。

求98与63的最大公约数:

98-63=35

63-35=28

35-28=7

28-7=21

21-7=14

14-7=7

所以,98和63的最大公约数等于7。

2、代码

#include<stdio.h>int gcd(int a, int b) {while (a != b) {if (a > b)a = a - b;elseb = b - a;}return b;
}

三、秦九韶算法

1、简介

秦九韶算法是中国南宋时期的数学家秦九韶提出的一种多项式算法

在西方被称作霍纳算法

一般地,一元n次多项式的求值需要经过(n+1)*n/2次乘法和n次加法,而秦九韶算法只需要n次乘法和n次加法。

2、算法描述

  • 用一个数组去描述该多项式,数组的最大下标就是最大幂,下标对应的值就是对应的系数
  • 输入多项式信息,x的值和各系数(看作是的系数)
  • 以加法为连接点

3、代码

#include<stdio.h>/*秦九韶算法*/
int Qinjiushao(int x,int*a,int n)//x x的值  *a 包含系数信息的数组  n 最高幂+1
{int result = a[n-1];for(int i=n-2;i>=0;i--)result = x*result+a[i];return result;
}int main()
{int x,n;printf("x的值:\n");scanf("%d",&x);printf("最高幂:\n");scanf("%d",&n);int a[n];for(int i=0;i<n+1;i++){printf("系数%d:\n",i);scanf("%d",&a[i]);}printf("由秦九韶算法得出结果:%d",Qinjiushao(x,a,n+1));
}

4、举例说明

的值

【C语言】辗转相除法+更相减损术+秦九韶算法相关推荐

  1. 初等数论--整除--欧几里得算法/辗转相除法/更相减损术

    初等数论--整除--欧几里得算法/辗转相除法/更相减损术 欧几里得算法/辗转相除法/更相减损术 博主本人是初学初等数论(整除+同余+原根),本意是想整理一些较难理解的定理.算法,加深记忆也方便日后查找 ...

  2. C语言 用更相减损术求最大公约数,最小公倍数

    更相减损术 更相减损术是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合. 出处 <九章算术> 用途 求最大公约数 作用 ...

  3. 【原创】更相减损术 stein算法 欧几里得算法 拓展欧几里得算法 扩展欧几里得算法 逆元的计算与筛法 解模线性方程

    欧几里得 说在前面 数论学复习 Part 6. 然后再来一章CRT和组合数,就飞往概率,以此为跳板去向DP. 计划很美啊你. P.S. 这么说来拉格朗日插值可以说是数论学复习的Part 0了啊. 有一 ...

  4. 求最大公约数与最小公倍数 (辗转相除法+更相减损法+Stein算法)

    辗转相除法与更相减损法对比: (1)两者都是求最大公因数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显 ...

  5. 更相减损术程序设计c语言,更相减损术

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 更相减损术是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合 ...

  6. C++算法:辗转相除法与更相减损术

    辗转相除法与更相减损术 1.我们已经学过求最大公因数的知识,你能求出18与30的公因数吗? 2.如果公因数比较大而且根据我们的观察又不能得到一些公因数,我们又应该怎样求它们的最大公因数?比如求8251 ...

  7. 更相减损术——Java实现

    Java作业--求最大公约数--更相减损术 虽然算法简单,但是因为很不熟练,所以一开始的代码有较多错误,以下是经过多次修改后的代码. 代码: import java.util.Scanner;publ ...

  8. c语言碾转相除法,从高中碾转相除法、更相减损术算法谈起

    编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化.「---- Runsen」 先问你们一个小学问题:「如何求两个整数的最大公约数?」 曾经见过不少的算法题,发现有的并不在数据 ...

  9. 求最大公约数和最小公倍数——辗转相除法(欧几里得算法)、更相减损术、stein算法

    辗转相除法-- 辗转相除法求最大公约数的原理: 两个整数其中较小的数 和 两数相除(较大数除较小数)的余数(使用递归)的最大公约数. 辗转相除法求最小公倍数的原理: 两个整数分别除以最大公约数的结果相 ...

最新文章

  1. RNN,LSTM,GRU简单图解:
  2. Sparkmllib scala线性回归
  3. Unity(四)IocContainer 封装类库
  4. Android之tint图片着色器
  5. 老板:再用Log4j就收拾东西回家吧!
  6. 一个“想忘带东西都难”的出行指南
  7. arm平台下的反汇编pdf_stm32逆向与安全科普,bin文件逆向反汇编
  8. 一个websocket 可以多个页面创建吗_聊聊 WebSocket,还有 HTTP
  9. Hadoop安装教程(Hadoop3.3.1版本),centos7系统,避免踩坑
  10. 易语言窗口c_句柄取进程名,通过进程名取窗口句柄
  11. BZOJ 3669 luogu 2387 魔法森林
  12. phpstudy8.1安装duxcms3.1.3
  13. Kubernetes — 使用 kubeadm 部署高可用集群
  14. vivo7.0系统手机最完美激活Xposed框架的教程
  15. 异硫氰酸荧光素(FITC)标记的抗人IL-1ra单克隆抗体,FITC-IL-1ra
  16. Python定时任务推送微信消息
  17. 187、商城业务-检索服务-页面排序功能
  18. 24.线程系列- google提供的一些好用的并发工具类
  19. 教师计算机提升返岗总结,语文老师返岗研修心得体会
  20. 为bib文件中文参考文献的key域添加排序用拼音

热门文章

  1. PPTV百亿内容开放战略,矛盾表象下的底层逻辑是什么?
  2. android定义两个监听,Android中的2个手指旋转手势监听器
  3. android实现在线阅读功能,Android使用WebView实现离线阅读功能
  4. 人工智能数学基础---定积分8:无穷限反常积分审敛法
  5. CNI 网络分析 3.1 Flannel 介绍与原理
  6. 2022年多媒体领域国际会议期刊汇总
  7. 计算机二级考试九月份,九月份的计算机二级考试,你准备好了吗?
  8. 超牛叉的外网渗透详细教程
  9. MATLAB生成周期方波信号:square 函数使用简记
  10. vue-router的两种模式的区别