欧几里德的是来求最大公约数的,扩展欧几里德,基于欧几里德实现了一种扩展,是用来在已知a, b求解一组x,y使得ax+by = Gcd(a, b) =d(解一定存在,根据数论中的相关定理,证明是用裴蜀定理),关于欧几里德的证明请看上篇。基本算法:基本算法:对于不完全为 0 的非负整数 a,b,gcd(...
分类:
其他好文 时间:
2015-03-16 21:06:32
阅读次数:
194
也可以使用最笨的办法就是短除法,但是如果数比较大的话效率问题就呵呵了。package sfbc;/** * 利用辗转相除法来解决最大公余数问题 * 可以用来求最简分数 * @author trfizeng * */public class GCD { public static void ma...
分类:
其他好文 时间:
2015-03-16 20:49:29
阅读次数:
198
http://acm.timus.ru/problem.aspx?space=1&num=1040题目要求在一个联通无向图中找出一种方法给边标号使得任意一个有多条边的点,边的号码的最大公约数都为1想象在dfs树上,以1为根进入,将第一条边标为序号1,则节点1满足条件剩下的边遵照dfs顺序表明,那么非...
分类:
其他好文 时间:
2015-03-15 07:01:29
阅读次数:
177
转自网上大牛博客,讲的浅显易懂。原文地址:http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html欧几里德算法欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。基本算法:设a=qb+r,其中a,b,q,r都是整数...
分类:
编程语言 时间:
2015-03-15 00:33:44
阅读次数:
284
先给出源码,下面解释。#include<stdio.h>voidmain(){inta,b,c,d;//定义四个变量scanf("%d,%d",&a,&b);d=a*b;//求出两个正整数的乘积while(b!=0){c=a%b;//重点是这里,很多人看不懂,再往下面看a=b;b=c;}printf("最大公约数为%d,最大公倍数为%d\n",a,(d/a));}最..
分类:
编程语言 时间:
2015-03-13 14:37:27
阅读次数:
165
欧几里得求公约数:int gcd(int a, int b){ while (b) { int tmp = b; b = a % b; a = tmp; } return a;}筛选法求素数:int prime(){ memse...
分类:
其他好文 时间:
2015-03-12 18:32:57
阅读次数:
99
#include#includeusing namespace std;typedef long long ll; //【skill】重命名struct num{ ll zi,mu; //分子分母};ll gcd(ll a,ll b) //求最大公约数{ return ...
分类:
其他好文 时间:
2015-03-11 16:33:00
阅读次数:
145
过了这么久,终于知道了辗转相处的证明了,以前只是记住了,但不是真的很理解,现在写一下它的证明,以便下次忘了的时候看一下。辗转相除是求两个数的最大公约数的。要证这个定理成立,只需要证明 gcd(a, b) = gcd(b, a % b) 就行了证明:令a % b = r, 所以a = k * b + ...
分类:
编程语言 时间:
2015-03-11 12:52:19
阅读次数:
160
#include
#include
/*
编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。
例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , 4)函数返回4
*/
//更相减损法
int fuc(int m,int n)
{
int i=0,temp,x;
while(m%2==0 && n%2==0) //判断m和n能被多...
分类:
编程语言 时间:
2015-03-10 23:11:40
阅读次数:
175
最大公约数 1 int gcd(int a,int b) 2 { 3 int temp; 4 while(b) 5 { 6 temp = b; 7 b = a%b; 8 a = b; 9 }10 11 retu...
分类:
编程语言 时间:
2015-03-05 23:36:48
阅读次数:
216