最大公约数 最小公倍数
来源:互联网 发布:知柏地黄丸有副作用吗 编辑:程序博客网 时间:2024/05/14 21:36
如果是非循环,输出所有数字, 如果是循环数,标注哪里开始循环
用长除做 然后用表记下来之前的余数
1. 先找到最大公约数
2. a/b 只可能有 b-1种余数, 然后建一个 大小为 b的 hashtable
或者数组,查找是不是有重复
3. 如果 x/k 0<x<k , k是质数, k 的质因子只有2和5的话 不循环
Greatest common divisor 最大公约数
least common multiple 最小公倍数
最大公约数:
如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。
这个有几种方法,下面是两种不错的方法:
(1)求差判定法.
如果两个数相差较大,可以用大数减去小数的若干倍,一直减到差比小数小为止,差和小数的最大公约数就是原来两数的最大公约数.例如:求92和16的最大公约数.92-16=76,76-16=60,60-16=44,44-16=28,28-16=12,12和16的最大公约数是4,所以92和16的最大公约数就是4.
(短除符号就是除号倒过来。短除就是在除法中写除数的地方写两个数共有的质因数,然后落下两个数被公有质因数整除的商,之后再除,以此类推,直到结果互质为止(两两互质)。
而在用短除计算多个数时,对其中任意两个数存在的因数都要算出,其它没有这个因数的数则原样落下。直到剩下每两个都是互质关系。
求最大公约数便乘一边,求最小公倍数便乘一半。
此处介绍短除法与C++实现并无关系,这里只是作为延伸知识简单介绍一下,实际上我们小学时候学习的正是这种方法
)。
以上是理论知识的介绍,下面贴出求最大公约数的C++程序代码:
递归方法:
#include <iostream>using namespace std;int MaxY(int a,int b){ int min, max; max=a>b?a:b; min=a<b?a:b; if(max%min==0)return min; else return MaxY(min,max%min);} int main(){ int a,b; cout<<"输入两个整数,用空格分隔,按回车键(Enter):"; cin>>a>>b; cout<<"这两个整数的最大公约数为:"<<MaxY(a,b)<<endl; return 0;}
或者非递归方法:
#include <iostream>using namespace std;int MaxY(int a,int b){ int min, max; int r; max=a>b?a:b; min=a<b?a:b; if(max%min==0) return min; while(max%min!=0) { r=max%min; max=min; min=r; } return min;} int main(){ int a,b; cout<<"输入两个整数,用空格分隔,按回车键(Enter):"; cin>>a>>b; cout<<"这两个整数的最大公约数为:"<<MaxY(a,b)<<endl; return 0;}
最小公倍数:
借助最大公约数求最小公倍数
步骤:
一、利用辗除法或其它方法求得最大公约数
二、 最小公倍数等于两数之积除以最大公约数。
举例:12和8的最大公约数为4
12×8/4=24
两数的最小公倍数是24。
根据上面的已经给出的最大公约数的C++程序代码只要稍作修改便可变为求最小公倍数的C++程序代码。
求最小公倍数的C++程序代码如下:
#include <iostream>using namespace std;int MinY(int a,int b){ int min, max; int r; max=a>b?a:b; min=a<b?a:b; if(max%min==0) return max; while(max%min!=0) { r=max%min; max=min; min=r; } return a*b/min;} int main(){ int a,b; cout<<"输入两个整数,用空格分隔,按回车键(Enter):"; cin>>a>>b; cout<<"这两个整数的最小公倍数为:"<<MinY(a,b)<<endl; return 0;}
这里给出的是非递归方法,递归方法也一样可以根据上面最大公约数求法将程序代码稍作修改即可。
- 最大公约数,最小公倍数
- 最大公约数最小公倍数
- 最大公约数 最小公倍数
- 最小公倍数,最大公约数
- 最大公约数 最小公倍数、、、
- 最大公约数、最小公倍数
- 最大公约数、最小公倍数
- 最大公约数 最小公倍数
- 最大公约数、最小公倍数
- 最大公约数&&最小公倍数
- 最大公约数,最小公倍数
- 最大公约数 最小公倍数
- 最大公约数 最小公倍数
- 最大公约数: 最小公倍数
- 最大公约数,最小公倍数
- 最大公约数,最小公倍数
- 最大公约数,最小公倍数
- 最小公倍数,最大公约数
- ohci之usb_submit_urb 一
- tomcat配置数据源方法
- 织梦field标签常用字段名
- linux编译时permission denied问题
- 系统MTU值的更改方法
- 最大公约数 最小公倍数
- H608B再接路由器,包括桥接!
- mysql数据库学习笔记之常用操作命令
- VC编译时,提示no compile tool is associated with the file extension错误
- 最近一段时间的总结
- 游戏引擎导论
- 托管代码 (managed code)
- c++ namespace
- jsp 错误代码