您的位置:首页 > 其它

求两个整型数字的最大公约数问题

2009-03-31 22:45 387 查看
Question

给出两个正的整型数字,m和n,求它们的最大公约数

Euclid Algorithm

第一步: 假设m>n,m除以n得到的余数为r

第二步: 如果r=0,那么n就是最大公约数,结束,否则第三步

第三步: m<-n, n<-r 跳到第一步

#include	<stdio.h>
#include	<stdlib.h>
#include	<assert.h>

struct testSuit {
unsigned int    max;
unsigned int    min;
unsigned int    gDivisor;
} testData[] = {
{ 50U, 40U, 10 },
{ 100, 50U, 50 },
};

unsigned int getGreatestDivisor(unsigned int a, unsigned int b);

int main ( int argc, char *argv[] )
{
printf("50 40 %u/n", getGreatestDivisor(50U, 40U));

return EXIT_SUCCESS;
}

unsigned int getGreatestDivisor(unsigned int a, unsigned int b)
{
unsigned int    r;
unsigned int    max, min;

assert(a != 0 && b != 0);

max = (a > b) ? a : b;
min = (max == a) ? b : a;

r = max % min;

while ( r ) {
max = min;
min = r;

r = max % min;
}

return min;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐