基本算法简介(一)
#1?牐犛谜纷喑ㄇ笞畲蠊际妥钚」妒?
?牐犖颐窃诔绦蛏杓浦校;嵊龅揭恍┰谝淮蠖咽葜校笳庑┦莨灿刑匦缘那榭觥O旅嫖颐且粤礁隼酉虼蠹医樯苷庵炙惴ā?
?牐犚话愕厮担笞钚」妒昧礁鍪幕宰畲蠊际纯桑笞畲蠊际辛街炙惴ǎ?
?牐?1.穷举法,从较小数由大到小列举,直到找到公约数立即中断列举,得到的公约数便是最大公约数,
?牐?2.辗转相除法,又名欧几里德算法,是计算最大公约数和最小公倍数的重要方法,比穷举法简便得多。
?牐犞饕淌牵ㄉ枇绞猘,b,a>b):
?牐?1)a除以b得余数c;
?牐?2)令a=c,b除以a得余数c;
?牐?3)如果a不等于b则跳回1),否则结束,最后一次的余数就是两数的最大公约数。
?牐犗旅嫖颐怯肅语言(Turbo C 2.0)来分别演示这两种方法。
#2?牐牫绦蛞唬?
?牐?#include<stdio.h>
?牐爄nt max(a,b){?牓?
?牐爄f(a>=b)??
?牐爎eturn(a);?牔?
?牐爀lse
?牐爎eturn(b);}?牔牓?
?牐爄nt zdgys(int a,int b){?? ??
?牐爄nt m;??
?牐爁or(m=max(a,b);m>0;m--)??
?牐爄f((a%m==0)&&(b%m==0))break;??
?牐爎eturn(m);?爙 ??
?牐爄nt zxgbs(int a,int b,int y)??
?牐牓煟鹯eturn(a*b/y;}?牔牓?
?牐爉ain()?煟?
?牐牓煟鹖nt i,j,k,l;??
?牐爏canf("%d,%d",&i,&j);?牔?
?牐爇=zdgys(i,j);?牔?
?牐爈=zxgbs(i,j,k);?牔?
?牐爌rintf("%d和%d的最大公约数是:%d,最小公倍数是:%d",i,j,k,l)?牔? ??
#2?牐牫绦蚨?
?牐?#include<stdio.h>
?牐爄nt zdgys(int a,int b)
?? ?煟?
?牐爄nt c,d;??
?牐爄f(b>a)??
?牐牓煟鹀=a;a=b;b=c;}?牓?
?牐爁or(;;)}?煢牔牐? ??
?牐燿=a%b;??
?牐爄f(d==0)?? break;??
?牐燼=b;??
?牐燽=d;}?? ??
?牐爎eturn(b);}?牔? ??
?牐爄nt zxgbs(int a,int b,int y)??
?牐牓煟鹯eturn(a*b/y;}?牔牓?
?牐爉ain()?煟?
?牐牓煟鹖nt i,j,k,l;??
?牐爏canf("%d,%d",&i,&j);?牔?
?牐爇=zdgys(i,j);??
?牐爈=zxgbs(i,j,k);?牔?
?牐爌rintf("%d和%d的最大公约数是:%d,最小公倍数是:%d",i,j,k,l);}?牔? ??
?牐犜闯绦蚩梢栽趆ttp://go8.163.com/~betterprogram/下载。