| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 671 人关注过本帖
标题:最大公约数函数.
取消只看楼主 加入收藏
songweiwen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2006-2-19
收藏
 问题点数:0 回复次数:2 
最大公约数函数.
我只能一步步的减一(或加一)以得到约数,请问各位有没有更好的算法可以更快的求出最大公约数????
submultiple(int a,int b)
{int i;
if(a*b==0) printf("I cann't make sure!"); /*要是有零就不知道怎样处理了!这里是否也要加一个"return()"?????????*/
else {if(abs(a)>abs(b)) i=b; /*又要处理正负数的问题*/
else i=a;
for(;i>=1;i--) /*我只能一步步的减一以得到约数*/
if(a%i==0&&b%i==0){return(i);break;}
for(;i<=-1;i++)
if(a%(-i)==0&&b%(-i)==0){return(-i);break;}
}
}

[此贴子已经被作者于2006-4-12 15:16:43编辑过]

搜索更多相关主题的帖子: 函数 最大公约数 
2006-04-12 15:15
songweiwen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2006-2-19
收藏
得分:0 
请大家看看这个程序,当我输入1111 2222时,输出是The greatest common divisor of 1111 and 0 is:2222
和The lease common multiple of 1111 and 0 is:2222.究竟那里出错了??????
main()
{long a,b;
long submultiple(long,long);
long multiple(long,long);
printf("Please input two numbers:");
scanf("%d %d",&a,&b);
if(a>0&&b>0){
printf("\nThe greatest common divisor of %d and %d is:%d",a,b,submultiple(a,b));
printf("\nThe lease common multiple of %d and %d is:%d\n",a,b,multiple(a,b));
}
else printf("I cann't make sure!"); /*要是有零或负数就不知道怎样处理了!*/
}
long submultiple(long max,long min)
{long i;
if(max>min) i=min;
else {i=max;max=min;min=i;}
for(;;)
{if(i=max%min) {max=min;min=i;}
else {return(min);break;}}
}
long multiple(long a,long b)
{
return(a*b/submultiple(a,b));}

Finding!!!
2006-04-14 07:39
songweiwen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2006-2-19
收藏
得分:0 

非常感谢!!!


Finding!!!
2006-04-14 14:37
快速回复:最大公约数函数.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011675 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved