最大公因数使用辗转相除法来求,最小公倍数则由这个公式来求:

GCD * LCM = 两数乘积

解法最大公因数可以使用递回与非递回求解,因式分解基本上就是使用小于输入数的数值当作除数,去除以输入数值,如果可以整除就视为因数,要比较快的解法就是求出小于该数的所有质数,并试试看是不是可以整除,求质数的问题是另一个课题,请参考 Eratosthenes 筛选求质数

实作(最大公因数、最小公倍数)

#include <stdio.h>
#include <stdlib.h> int main(void) { int m, n, r; int s;printf("输入两数:"); scanf("%d %d", &m, &n); s = m * n;while(n != 0) { r = m % n; m = n; n = r; } printf("GCD:%d\n", m); printf("LCM:%d\n", s/m); return 0;
}
实作(因式分解)C(不用质数表)
#include <stdio.h>
#include <stdlib.h> int main(void) { int i, n; printf("请输入整数:"); scanf("%d", &n); printf("%d = ", n); for(i = 2; i * i <= n;) { if(n % i == 0) { printf("%d * ", i); n /= i; } else i++; } printf("%d\n", n); return 0;
} C(使用质数表)
#include <stdio.h>
#include <stdlib.h> #define N 1000 int prime(int*);  // 求质数表
void factor(int*, int);  // 求factor int main(void) { int ptable[N+1] = {0}; int count, i, temp; count = prime(ptable); printf("请输入一数:"); scanf("%d", &temp); factor(ptable, temp); printf("\n"); return 0; } int prime(int* pNum) { int i, j; int prime[N+1]; for(i = 2; i <= N; i++) prime[i] = 1; for(i = 2; i*i <= N; i++) { if(prime[i] == 1) { for(j = 2*i; j <= N; j++) { if(j % i == 0) prime[j] = 0; } } } for(i = 2, j = 0; i < N; i++) { if(prime[i] == 1) pNum[j++] = i; } return j;
} void factor(int* table, int num) { int i; for(i = 0; table[i] * table[i] <= num;) { if(num % table[i] == 0) { printf("%d * ", table[i]); num /= table[i]; } else i++; } printf("%d\n", num);
}

最大公因数、最小公倍数、因式分解相关推荐

  1. c语言最大公约数和最小公倍数_五年级数学最大公因数最小公倍数 练习

    五年级数学最大公因数最小公倍数-练习 一.填空. 1.把36分解质因数是(            ),把60分解质因数是(        ). 2.自然数a除以自然数b,商是15,那么a和b的最大公因 ...

  2. matlab求最大公倍数_小学数学最大公因数最小公倍数练习

    1 五年级数学最大公因数最小公倍数-练习 一.填空. 1.把36分解质因数是(            ),把60分解质因数是(        ). 2.自然数a除以自然数b,商是15,那么a和b的最大 ...

  3. C语言_公倍数、最小公倍数_调用函数求最大公因数最小公倍数

    公倍数:两个或两个以自然数共同的倍数. 最小公倍数:两数(多个数)相乘除以两数(多个数)的最大公约数. //最小公倍数 #include<stdio.h> int main() {int ...

  4. 辗转相除法(欧几里得算法)求 最大公约数与最小公倍数+推论与证明。

    首先我们规定:0不参与公约数和公倍数的讨论 先来讨论最大公约数: 最大公约数求法:两个数的所有公共质数相乘. 考虑三个问题. 为什么是公共的:公共代表这个数可以被两个数都整除 为什么是质数:合数一定能 ...

  5. 最小公倍数的求解原理和证明

    最小公倍数计算公式:最小公倍数=两个数之间的乘积/两个数之间的最大公因数最小公倍数=两个数之间的乘积/两个数之间的最大公因数最小公倍数=两个数之间的乘积/两个数之间的最大公因数最大公因数可以通过辗转相 ...

  6. 数论:最大公约数与最小公倍数的应用:最大公约数和最小公倍数问题

    总结: 参考文献:https://sochiji.blog.luogu.org/solution-p1029 1.a * b == (a,b) * [a,b] (a,b的最大公约数 * a,b的最小公 ...

  7. 考研C语言程序练习0722

    1.从键盘输入一个整数,判断该数是否为素数. 素数(质数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. #include<stdio.h> #include<m ...

  8. 常用math.h数学函数以及其他函数(吉林大学 孙立鑫)

    目录 1.math.h 头文件的常用函数 a.signbit(求浮点数是否含有符号) b.三角函数汇总 c.双曲函数 d.指数函数对数函数 e.分解浮点数(详解如下)frexp f.取浮点数的指数部分 ...

  9. 算法:欧几里得辗转相除法的原理

    目录 辗转相除法的原理 更相减损术(辗转相减法) 算法实现 求最小公倍数 辗转相除法的原理 辗转相除法具体是谁提出的也难以考证,但是这个算法最早出现在古希腊数学家欧几里得的著作-----<几何原 ...

  10. #define的妙用

    define的妙用 #define的妙用 例1:define不仅仅能代表一个数字 例2:define不仅仅能代表一串字符 2.1:lowbit 2.2:swap 2.3:gcd和lcm max和min ...

最新文章

  1. oracle导出对象和数据,浅析Oracle对象和数据的导入导出
  2. puppeteer(headless chrome)实现网站登录
  3. 事件 ID 6008问题
  4. php mongo分页查询,PHP操作Mongodb之高级查询篇
  5. 非递归遍历求二叉排序树的深度
  6. python读取文件名写入excel_Python实现读取并写入Excel文件过程解析
  7. Unity SRP自定义渲染管线 -- 1.Custom Pipeline
  8. LeetCode—37. 解数独(困难)
  9. 社区 正式发布了跨平台的 CoreWCF 0.2.0
  10. Java实现Excel导入数据库,数据库中的数据导入到Excel
  11. LeetCode 1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?(前缀和)
  12. 建议看 | 计算机网络核心概念
  13. [转]在Sql Server中将字符串分割成表格数据示例
  14. 光学仿真(python菲涅尔公式)
  15. 复现SCI图表-ggplot做花瓣图
  16. lol java_浅谈设计模式(java)——从lol来看观察者模式
  17. 酸辣土豆丝的做法你知道几个?
  18. Code.V光学设计学习(三)——公差分析
  19. ckplayer html5 添加广告,ewebeditor下利用ckplayer增加html5 (mp4)全平台的支持
  20. C++中的重载丶重写丶重定义丶重定向的区别

热门文章

  1. 【Android 异步操作】手写 Handler ( 总结 | Message | MessageQueue | Looper | Handler ) ★
  2. vue项目中批量打印二维码
  3. android 开发工具篇之android studio(二)使用篇
  4. 《C程序设计语言》读书笔记----习题1-21
  5. foreach 语句
  6. 汇编语言随笔(6)-大小写转换与实验6(双重循环:需要保存cx值)
  7. pyinstaller打包后读不到配置文件的解决方法
  8. 带你一起撸一遍 nodejs 常用核心模块(二)
  9. html回顾随笔JS(*^__^*)
  10. 【以太坊】ubuntu安装以太坊ethereum的测试网络ropsten-net以及雷电网络raiden-network环境...