标题:计算两个数的最大公约数和最小公倍数,自己编的,感觉比书上的方法好。大家 ...
只看楼主
JerryChen
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-8-14
 问题点数:0 回复次数:7 
计算两个数的最大公约数和最小公倍数,自己编的,感觉比书上的方法好。大家看看。有
/* 计算两个数的最大公约数和最小公倍数 */
#include<stdio.h>
#include<math.h>
main()
{int i,j,k,l,a,b;
printf("\nplease input two number:\n");
scanf("%d%d",&a,&b);
i=1;j=1;
while(a/i!=b/j)
{while(a/i>b/j)
i++;
while(a/i<b/j)
j++;
}
printf("The zuidagongyueshu of two number is %d\n",a/i);
i=1;j=1;
while(a*i!=b*j)
{while(a*i>b*j)
j++;
while(a*i<b*j)
i++;
}
printf("The zuixiaogongbeishu of two number is %d\n",a*i);
}

[此贴子已经被作者于2006-8-14 21:07:37编辑过]

搜索更多相关主题的帖子: 最大公约数 最小公倍数 感觉 number 
2006-08-14 21:07
喝茶的小k
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-7-27
得分:0 


刚做了这个的练习题,这是偶写的

#include<stdio.h>

int gcd(int m,int n)  //最大公约数

{
while(m!=n)
{
if(m>n)
m=m-n;
else
n=n-m;
}
return m;
}

int lcm(int m,int n) //最小公倍数

{
int result;
result=(m*n)/gcd(m,n);
return result;
}

int main()
{
int u,v,common_divisor,common_multiple;
printf("Enter two non-zero integer:");
scanf("%i %i",&u,&v);
if(u*v==0||u<0||v<0)
return 0;
else
{
common_divisor=gcd(u,v);
common_multiple=lcm(u,v);
printf("\n greatest common_divisor = %i \n greates tcommon_multiple = %i\n",common_divisor,common_multiple);
return 1;
}
}



2006-08-15 01:03
ridwsc
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2006-8-10
得分:0 
楼主,你的程序,当我输入5和6时,
输出的最大公约数怎么会是2呀

中国加油,加油,加油~~~~~ 我行~~我可以~~C
2006-08-15 08:50
ridwsc
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2006-8-10
得分:0 
楼主,你的程序,当我输入5和6时,
输出的最大公约数怎么会是2呀

中国加油,加油,加油~~~~~ 我行~~我可以~~C
2006-08-15 08:50
JerryChen
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-8-14
得分:0 
说得对,是因为,a/i,b/j都只能是整型,所以除了问题。待我改改
2006-08-15 19:51
JerryChen
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-8-14
得分:0 

/*最大公约数,最小公倍数*/
#include<stdio.h>
#include<math.h>
main()
{double i,j;
int a,b;
printf("\nplease input two number:\n");
scanf("%d%d",&a,&b);
i=1;j=1;
while(a/i!=b/j)
{while(a/i>b/j)
i++;
while(a/i<b/j)
j++;
}
printf("The zuidagongyueshu of two number is %f\n",a/i);
i=1;j=1;
while(a*i!=b*j)
{while(a*i>b*j)
j++;
while(a*i<b*j)
i++;
}
printf("The zuixiaogongbeishu of two number is %f\n",a*i);
}

这样就对了。分母必须要比分子的类型复杂。int/double.

[此贴子已经被作者于2006-8-25 21:32:52编辑过]

2006-08-15 20:36
JerryChen
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-8-14
得分:0 
int/double,不能是double/int
2006-08-25 22:33
haroldi
Rank: 1
等 级:新手上路
帖 子:158
专家分:0
注 册:2006-7-22
得分:0 
int gcd(int im,int in)
{
while(0!=im)
{
im%=in;
if(0==im) return in;
in%=im;
if(0==in) return im;
}
}

Do people want thick road ...
2006-08-25 22:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-83972-1-1.html




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

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