欧几里德算法
来源:互联网 发布:gunicorn windows 编辑:程序博客网 时间:2024/06/15 23:09
欧几里德算法
typedef long long LLLL gcd(LL a, LL b) { if (!b) { return a; } else { return gcd(b, a%b); }}
欧几里德拓展算法求出两个整数x和y,使得ax+by=d。在此前提下|x|+|y|取最小值。代码如下。
//// main.cpp// 欧几里的算法拓展//// Created by zhoujl on 15/9/13.// Copyright (c) 2015年 zhoujl. All rights reserved.//#include <iostream>//欧几里得拓展算法void gcd(int a, int b, int& d, int& x, int& y) { if (!b) { d = a; x = 1; y = 0; } else { gcd(b, a%b, d, y, x); y -= x*(a/b); }}int main(int argc, const char * argv[]) { // insert code here... int d, x, y; gcd(98, 70, d, x, y); std::cout << x << " " << y << std::endl; return 0;}
证明:
ax1+by1 = d
bx0 + (a % b)y0 = d
ax1 + by1 = bx0 + (a % b)y0 = bx0 + ( a - a/b*b)y0 = ay0 +( x0-a/b * y0)b
x1 = y0 , y1 = x0-a/b*y0
1 0
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- 欧几里德算法
- [c++元编程一] 介绍
- S3C2440启动文件 rcS
- Linux C编程常用的API函数
- scip学习笔记(1)
- Android中SQLite数据库存储方式
- 欧几里德算法
- 第8周工作周报
- Android之BroadcastReceiver的使用
- 获取最优服务的QOS值
- 安装Tomcat出错的解决办法
- Ubuntu 14.04 vmware workstation:Virtual ethernet [Failed]
- MFC实例:图形移动
- [ZOJ 3893][ZOJ Monthly 2015.09]B Board [构造]
- 从校园到工作的路(一)