算法-欧几里得算法(C++实现)
来源:互联网 发布:小数据研究所 编辑:程序博客网 时间:2024/05/16 00:40
欧几里得算法求得的是两个整数的最大公因式。而这是一个快速算法。
两次迭代之后余数最多是原值的一般,所以迭代次数最多是2logN = O(logN)级别的。
证明我就不放在这里了。然后2logN次数是最差情况,这个情况是在两个数为相邻的斐波那契数的时候。
代码如下:
//// main.cpp// Euclid//// Created by Alps on 14-7-24.// Copyright (c) 2014年 chen. All rights reserved.//#include <iostream>using namespace std;int Eud(int M, int N){ int tmp; while (N > 0) { tmp = M % N; M = N; N = tmp; } return M;}int main(int argc, const char * argv[]){ int M, N; scanf("%d %d",&M, &N); if (M < N) { M += N; N = M - N; M = M - N; } int Rem = Eud(M, N); printf("Rem is %d\n",Rem); return 0;}
这里说下,在Main函数里,有个if 那个是当M 比 N小的时候,交换M 和 N,这个方法是不引入第三个数的方法来交换的,其实我知道的还有两种办法,(位于和位或的办法)。可以看下~
其他的都很简单了~
0 0
- 欧几里得算法(C实现)
- 欧几里得算法(C++)
- 算法-欧几里得算法(C++实现)
- Objective-C--欧几里得算法
- POJ2115 C Looooops(扩展欧几里得算法)
- 扩展的欧几里得算法求最大公约数的C/C++ 实现
- 算法学习 - 欧几里得算法(辗转相除法)(c++实现)
- 数论(欧几里得算法)
- 最大公约数(欧几里得算法)
- 最大公约数(欧几里得算法)
- 欧几里得算法(+扩展)
- (扩展)欧几里得算法
- 最大公约数(欧几里得算法)
- Euclid(欧几里得)算法
- 扩展欧几里得算法及实现
- 【算法数据结构Java实现】欧几里得算法
- 求最大公约数算法(欧几里得算法)的实现!!!
- 欧几里得算法(gcd)和扩展欧几里得
- BM算法详解
- 53 不高兴的小明
- 变量各类型所占的字节数
- java swing调用webservice实现qq在线查询是否在线
- python 进阶学习之12
- 算法-欧几里得算法(C++实现)
- IOS添加小图标
- 编程名言
- - Fractal(3.4.1)
- poj 3253Fence Repair
- 暑期个人赛--第二场--B
- VC++笔记十
- do{...}while(0)的意义和用法
- 54 小明的存钱计划