前天晚上遇到一题,编写程序求出最大公因数(最大公约数),本能的我想起来了数学中求最大公因式的方法,可是在程序实践上
明显的出了问题,两个数要一个一个的进行拆解,然后找到相同的,这根本是一条死路,思索一夜醒来,突然迸发灵感,可以
用两个数进行取余运算,如果余数为零则最大公因数为被除数,不为零则余数为最大公约数,恩,就是这个思路,简单的数据还行,但是遇到15和25之后就出现了问题,按上面思路那么公约数为10,可是实际为5,继续思考,可以用15对10进行取余,yes!就是这们办。
但是问题又出现了,两次可以三次呢?我根本无法预知到底要用几次,所以加个循环。ok。
这是一条漫长的过程,我的时间耗费在那个上面了。所以附加我的程序以表:
/**************************************************
* Name: gcd.c
* Purpose: Great comman divisor
* Author: zimo
* Date: 01/23/2010
* ***********************************************/
#include<stdio.h>
int main(void)
{
int divisor, dividend, result;
printf("Enter two integers:");
scanf("%d, %d", &divisor, ÷nd);
if(divisor == 0)
{
printf("Greatest common divisor: %d /n",dividend);
}
else if(dividend == 0)
{
printf("Geratest common divisor: %d /n", divisor);
}
else if(divisor >= dividend)
{
while(divisor % dividend != 0)
{
result = divisor % dividend;
divisor = dividend;
dividend = result;
}
printf("Greatest common divisor: %d /n",dividend);
}
else
{
while(dividend % divisor != 0)
{
result = dividend % divisor;
dividend = divisor;
divisor = result;
}
printf("Greatest common divisor: %d /n", divisor);
}
return 0;
}