神啊“”“”为什么我自己编的这段代码求最大公约数,最小公倍数总是错的。

原问题:神啊“”“”为什么我自己编的这段代码求最大公约数,最小公倍数总是错的。
分类:编程开发 > 最后更新时间:【2017-07-14 22:16:26】
问题补充:

package zuidazuixiao;

import java.util.Scanner;

public class gongyue

{

public static void main(String argsp[]){

@SuppressWarnings("resource")

Scanner input = new Scanner(System.in);

int m=input.nextInt();//传入值

int n=input.nextInt();//传入值

int e=m*n;

int c;

if(m>n)//保证n>m

{ c=m;m=n;n=c;

}

System.out.println("最大公约数为"+digui(m,n,e));//递归实现求值

System.out.println("最小公倍数数为"+e/digui(m,n,e));}

public static int digui(int m,int n,int e) {

int d;

d=n%m;//求余

if(d!=0)

{m=d;

n=m;

digui(m,n,e);

}//未求出,进入循环

return m;

}

}

最佳答案

程序的算法完全不对,且效率有问题,以下改好的参考:

public static void main(String argsp[]) {
@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);
int m=input.nextInt();//传入值
int n=input.nextInt();//传入值
int e=digui(m,n); //一个变量,一次调用就可以了

System.out.println("最大公约数为"+e);//递归实现求值
System.out.println("最小公倍数数为"+m*n/e);
}
public static int digui(int m,int n ) { //你的第三个变量在程序中没用到
int d;
if (n==0)
d=m;
else
d=digui(n,m%n);
return d;
}

最佳答案由网友  whoami1978  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
19

分享到:

其他回答

暂无其它回答!

    推荐