主题:求任意多个整数的公倍数
			 yaozheng
				 [专家分:28410]  发布于 2002-11-11 22:55:00
 yaozheng
				 [专家分:28410]  发布于 2002-11-11 22:55:00							
			#include<stdio.h>
main()
{
int num,i,a[100],d,c;
c=1;
printf("input ji ge zheng shu\n");
scanf("%d",&num);
for(i=0;i<num;i++){
printf("input di %d ge zheng shu\n",i+1);
scanf("%d",&a[i]);
}
d=a[0];
while(c==1){
for(i=0,c=0;i<num;i++){
if(d%a[i]!=0)
{c=1;d++;}
}
}
printf("gong bei shu shi %d",d);
}
--------------------------------------------------------------------------------
2 3 7 8 10 36 的最小公倍数是 2520
						
					 
		
			
回复列表 (共7个回复)
		
								
				沙发
				
					 yangq81 [专家分:0]  发布于 2002-11-15 19:48:00
yangq81 [专家分:0]  发布于 2002-11-15 19:48:00				
				求最小公倍数可以将两数相乘然后除以其最大公约数.
求最小公倍数函数如下:
#define abs(a) ((a)>0?(a):-(a))
long times(int a, int b)
{
  long c=(long)a*b; int tmp;
  a=abs(a); b=abs(b);
  if(a>b) {tmp=b; b=a; a=tmp;}
  //求最大公约数a
  while(b%a) {tmp=b; b=a; a=tmp-a;}
  return e/a;
}
这以下语句
d=a[0];
while(c==1){
for(i=0,c=0;i<num;i++){
if(d%a[i]!=0)
{c=1;d++;}
}
}
可改为:
d=a[0];
for(i=1; i<num; i++) d=times(d, a[i]);
							 
						
				板凳
				
					 yangq81 [专家分:0]  发布于 2002-11-15 19:50:00
yangq81 [专家分:0]  发布于 2002-11-15 19:50:00				
				return e/a;
应为
return c/a;
							 
						
				3 楼
				
					 liminggg1218 [专家分:0]  发布于 2002-11-19 22:26:00
liminggg1218 [专家分:0]  发布于 2002-11-19 22:26:00				
				  
#include<stdio.h>
main()
{
int num,i,a[100],d,c;
c=1;
printf("input ji ge zheng shu\n");
scanf("%d",&num);
for(i=0;i<num;i++){
printf("input di %d ge zheng shu\n",i+1);
scanf("%d",&a[i]);
}
d=a[0];
while(c==1){
for(i=0,c=0;i<num;i++){
if(d%a[i]!=0)
{c=1;d++;}
}
}
printf("gong bei shu shi %d",d);
}
 
有九个括号呀!!!!!!!!!!!!!!!!!!!!!!
							 
						
				4 楼
				
					 611yang [专家分:0]  发布于 2005-04-27 17:32:00
611yang [专家分:0]  发布于 2005-04-27 17:32:00				
				1楼大哥的程序有问题吗?
好象实参和形参类型不对呀
							 
						
				5 楼
				
					 lbskln [专家分:1380]  发布于 2005-04-27 19:15:00
lbskln [专家分:1380]  发布于 2005-04-27 19:15:00				
				楼主厉害,算法已经被我收录了!哈哈,我的算法库里有多了一个成员!
不过我要问一下,负数有最大公约数和最小公倍数吗?
我在计算最大公约数和最小公倍数时凡小于1都要返回错误的!我的做法是不是不正确?
							 
						
				6 楼
				
					 lbskln [专家分:1380]  发布于 2005-04-27 19:30:00
lbskln [专家分:1380]  发布于 2005-04-27 19:30:00				
				楼主可不可以在给一个求多个数的最大公约数的算法?经典的!
							 
						
				7 楼
				
					 lbskln [专家分:1380]  发布于 2005-04-27 19:43:00
lbskln [专家分:1380]  发布于 2005-04-27 19:43:00				
				我将楼主的算法做了一些改动,希望楼主指正:
template <class T>
long GetMulLCM(T a[],int num)
{
    int c=1;
    if(num<=0)return ERROR;
    for(int i=0;i<num;i++)
    {
        if(a[i]<0)return ERROR;
        else if(a[i]==0)return 0;
    }
    T d=a[0];
    while(c==1)
    {
        for(c=0,int i=0;i<num;i++)
        {
            if(d%a[i]!=0)
            {
                c=1;
                d++;
            }
        }
    }
    return (long)d;
}
							 
									
			
我来回复