神啊“”“”为什么我自己编的这段代码求最大公约数,最小公倍数总是错的。
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;
}
其他回答
暂无其它回答!