求最大分约数的程序,哪里错了??
class Gys//Gys代表公约数{
static int x,y,temp;
void bi(Gys a)//比较a,b.使b>a
{
if(a.x>a.y)
{
temp=a.x;
a.x=a.y;
a.y=temp;
}
}
int shuang(int a,int b)//求最大公约数
{int m=a,p;
if((b%a==0&&a%m==0))
{p=a;
}
else
{
p=shuang(a,b);
}
return p;
}
public static void main(String[]args)
{
int p;
Gys shu=new Gys();
shu.x=Integer.parseInt(args[0]);
shu.y=Integer.parseInt(args[1]);
shu.bi(shu);
p=shu.shuang(x,y);
System.out.println("a与b的最大公约数为:"+p);
}
[此贴子已经被作者于2007-11-5 21:54:32编辑过]
搜索更多相关的解决方案:
约数
----------------解决方案--------------------------------------------------------
修改了一下,现在可以没有问题了.
class Gys//Gys代表公约数
{
static int x,y,temp;
void bi(Gys a)//比较a,b.使b>a
{
if(a.x>a.y)
{
temp=a.x;
a.x=a.y;
a.y=temp;
}
}
int shuang(int a,int b)//求最大公约数
{
/* int m=a,p;
if((b%a==0&&a%m==0))
{
p=a;
return b;
}
shuang(a,b);
*/
int i=0;
while(true)
{
b = b*(++i);
if(b%a == 0)
{
break;
}
}
return b;
}
public static void main(String[] args)
{
int p;
Gys shu=new Gys();
//shu.x=Integer.parseInt(args[0]);
//shu.y=Integer.parseInt(args[1]);
shu.x = 14;
shu.y = 30;
shu.bi(shu);
p=shu.shuang(x,y);
System.out.println("a与b的最大公约数为:"+p);
}
}
----------------解决方案--------------------------------------------------------
上面的编行后的结果不正确,而且要用递归调用做这一个题目
[此贴子已经被作者于2007-11-6 12:19:01编辑过]
----------------解决方案--------------------------------------------------------
不好意思,我误解了你的意思。现在改过来了,运行也是正确的,你试一下吧
public class digui {
int m=0,result;
public void mydigui(int a, int b)
{
//int max = Math.max(a, b);
//++max;
m++;
if((b * m)%a == 0)
{
result = b*m;
}else
{
mydigui(a,b);
}
System.out.println(result);
}
public static void main(String args[])
{
digui dg = new digui();
dg.mydigui(15, 10); <--填入你要求的两 个数,不分大小。
}
}
----------------解决方案--------------------------------------------------------
我顶你个肺
----------------解决方案--------------------------------------------------------
是求最大公约数,这个好像是最小公倍数
----------------解决方案--------------------------------------------------------