首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个算法是否正确,不太好懂

2012-12-30 
这个算法是不是正确,不太好懂啊前不久网上看到的一个求最大公约数和最小公倍数的算法, 不是传统的算法,当

这个算法是不是正确,不太好懂啊
前不久网上看到的一个求最大公约数和最小公倍数的算法, 不是传统的算法,当时没读懂算法,只试了一组数得到正确答案以为没问题,做为一下与我平时常规做法不同的案例留下了,其实它是个错误的,今天想读懂什么原理,查了一下辗转相除法,才搞明白,读不懂的东西真不一定是对的,不过很多数学问题太过有技巧的,写成C代码可读性都差了,差到程序可以错了难于发现,下面这个是我重写的,大家看看还有没有问题:

#include<stdio.h>
 int maxaminb(int a,int b,int*maxa,int*minb)
 {
 int c,d,e;
 if(a<1||b<1||!maxa||!minb)
 return 0;//参数错误
 if(b>a) {c=a; d=b%a;}
 else {c=b; d=a%b;}
 while (d)//辗转相除法
 {
 e=c; c=d; d = e%d;
 }
 *maxa = c;
 *minb = a*b/c;
 return 1;
 }
 int main()
 {
 int a,b,c,d;
 scanf("%d%d",&a,&b);
 if(!maxaminb(a,b,&c,&d))
 return 0;
 printf("%d与%d 最大公约数%d 最小公倍数%d",a,b,c,d);
 return 0;
 }
 

[解决办法]
暂时没看出有什么错

热点排行