当前位置: 代码迷 >> C语言 >> [求助]有一点点小小的问题!
  详细解决方案

[求助]有一点点小小的问题!

热度:261   发布时间:2005-07-18 16:32:00.0
[求助]有一点点小小的问题!

// 求N个正整数的最小公倍数。 #include<stdio.h> int GCD(int x,int y); //X,Y的最大公约数 int LCM(int x,int y); // X,Y的最小公倍数 int main() { int n,m,*array,i,j; scanf("%d",&n); while(n) { scanf("%d",&m); array = new int[m]; for(i=0;i<m;i++) scanf("%d",&array[i]); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// for(j=0;j<m-1;j++) //问题可能出现在这里 { array[j+1]=LCM(array[j],array[j+1]); //我是通过两两求最小公倍数从而求得多个数的最小公倍数 } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// printf("%d\n",array[m-1]); n--; } return 0; }

int GCD(int x,int y) //X,Y的最大公约数 { int z; if(x>y) { z=x; x=y; y=z; } while((z=y%x)!=0) { y=x; x=z; } return z; }

int LCM(int x,int y) // X,Y的最小公倍数 { int z; z=(x*y)/GCD(x,y); return z; }

[此贴子已经被作者于2005-7-18 17:19:57编辑过]

搜索更多相关的解决方案: 小小的  

----------------解决方案--------------------------------------------------------
x,y,z好多呀。。。。。眼睛花了。。。。。。
----------------解决方案--------------------------------------------------------
x,y是两个参数,在GCD()里Z代表最大公约数,LCM()Z代表最小公倍数!
----------------解决方案--------------------------------------------------------
没人看一下吗?????
----------------解决方案--------------------------------------------------------
找出来了,原来GCD(x,y)的返回值搞错了


int GCD(int x,int y)  //X,Y的最大公约数
{
int z;
if(x&gt;y)
{
  z=x;
  x=y;
  y=z;
}
while((z=y%x)!=0)
{
  y=x;
  x=z;
}
return x;            //应该返回x才对
}
----------------解决方案--------------------------------------------------------
呵呵,祝贺~~~
----------------解决方案--------------------------------------------------------
编程质量忠告:楼主别忘了在程序最后释放分配的array,delete []array;避免指针悬挂。
----------------解决方案--------------------------------------------------------
好像你这样的循环求不出来最大的什么公约数或最小的什么公倍数吧,你只是求出了相邻的两个,而不相邻的你就没有计算。
现在忘记了最大什么公约数和最小什么公倍数是什么意思了。抱歉,抱歉!!!!
----------------解决方案--------------------------------------------------------
  相关解决方案