最大公约数---- C++
来源:互联网 发布:1920淘宝全屏轮播海报 编辑:程序博客网 时间:2024/06/05 17:58
方法一:
求两数的最大公约数,可采用欧几里得方法:只要两数不相等,就反复用大数减小数,
直到相等为止,此相等的数就是两数的最大公约数。
#include <fstream>#include <iostream>#include <vector>using namespace std;int gys(int,int); //声明函数int main(int argc, char* argv[]){ int x,y; cin>>x,y; cout<<gys(x,y)<<endl; //调用函数 return 0;}int gys(int x,int y) //定义函数{ while(x!=y) { if(x>y) { x=x-y; } else { y=y-x; } } return x;}
方法二:
辗转相除法。
#include <fstream>#include <iostream>#include <vector>using namespace std;int gys(int,int); //声明函数int main(int argc, char* argv[]){ int x,y; cin>>x,y; cout<<gys(x,y)<<endl; //调用函数 return 0;}int gys(int x,int y) //定义函数{ int m,n,p; if(x>y) { m=x; n=y; } else { m=y; n=x; } p=n; //定义余数的初值,为较小的数 while(p!=0) { p=m%n; //取余数 m=n;//变量值迭代 n=p;//更新余数 } return m;}
辗转相除法的算理是根据:在a=bq+r,中,除数b和余数r能被同一个数整除,那么被除数a也能被这个数整除。或者说,除数与余数的最大公约数,就是被除数与除数的最大公约数;如果反过来说,被除数与除数的最大公约数,就是除数与余数的最大公约数。
如果用辗转相除法求两个数的最大公约数时,最后的余数是1,那么这两个数就是互质数,或者说,它们只有公约数1
多个数的最大公约数:
#include <iostream>#include <vector>using namespace std;int main(){ int a,b,c; while(cin>>a>>b>>c) { int out; int tmp=a; if(tmp>b) tmp=b; if(tmp>c) tmp=c; for(int i=1; i<=tmp; i++) { if(a%i==0&&b%i==0&&c%i==0){ out=i; } } cout<<out<<endl; }}
ps:本帖仅新手可见,其余人员自行回避。
1 0
- C最大公约数
- c++(最大公约数)
- C语言求最大公约数
- c语言求最大公约数
- C 求最大公约数最小公倍数
- C语言精髓:最大公约数
- 最大公约数 最小公倍数(C)
- 【c语言】最大公约数
- C语言计算最大公约数
- 【C语言】求解最大公约数
- 求最大公约数(c++)
- 【C入门向】最大公约数
- c语言求最大公约数
- 最大公约数&&最小公倍数C语言
- C语言计算 最大公约数
- 求最大公约数C语言
- CodeForces 75C(最大公约数)
- 欧几里得的最大公约数!!!!(c/c++)
- 那一年,我们二十七八岁
- 数据库系统概论复习总结3 --- 第二章关系数据库标准语言SQL
- IIS——服务开启及本地发布网站图解(一)
- 抽象工厂模式
- [精]Oracle APEX 5.0 新手教程(一) Form表单
- 最大公约数---- C++
- 使用ReactiveCocoa实现iOS平台响应式编程
- (八)Git 提交更改
- Centos修炼----->Centos7之安装eclipse
- VisualDDK + Windbg 进行Windows内核调试(二)
- springmvc+mybatis 无极限树形结构菜单(第三种)
- (九)Git 推送操作
- 时间戳转化时间和星期
- SolrCloud