JAVA输入2个数,求他们的最大公约数。

我写的有问题,求大神帮我纠正,我是新手,讲的详细些。importjava.util.Scanner;publicclassMain{publicstaticvoidmai... 我写的有问题,求大神帮我纠正,我是新手,讲的详细些。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int m;int n;int temp;
Scanner input=new Scanner(System.in);
m=input.nextInt();
n=input.nextInt();
if(m>n){
temp=n;
}else{
temp=m;
}
for(int i=temp;i>=1;i--){
if(m%temp==0&&n%temp==0){
break;
}return;
} System.out.println(temp);
}
}
展开
 我来答
fanqiezz11
2014-11-04 · TA获得超过777个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:258万
展开全部
package com.code;

import java.util.Scanner;

public class TestRun {
public static void main(String[] args) {
int m;
int n;
int temp;
Scanner input = new Scanner(System.in);
m = input.nextInt();
n = input.nextInt();
if (m > n) {
temp = n;
} else {
temp = m;
}
for (int i= temp; i >= 1; i--) {
if (m % i == 0 && n % i == 0) {
temp=i;
break;
}
}
System.out.println("temp:" +temp );
}
}
1、break指跳出当前循环,当i从temp开始减小到为公约数时,break跳出循环就好了,return指跳出整个方法,所以后面的语句都不执行了。
2、最后输出的temp值你的程序是没有变的,temp是个参照,i才是变化的数字,当i减小到合要求时,将I赋值给temp此时temp才为公约数,否则temp一直是输入数值中较小的那个。
3、两个数要除的数值应该为逐渐减小的 i,而不是一直不变的temp
chenyou2
2014-11-04 · 超过20用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:46.7万
展开全部
public static void main(String[] args) {

int m;
int n;
int temp;
m = new Random().nextInt(1000);
n = new Random().nextInt(1000);
if (m > n) {
temp = n;
} else {
temp = m;
}
System.out.println("m:" + m);
System.out.println("n:" + n);
for (int i = temp; i >= 1; i--) {
if (m % i == 0 && n % i == 0) {
temp = i;
break;
}
}
System.out.println("temp:" + temp);
}
你代码注意一下,执行到了return后面就不会执行了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
o0o0o0ppkdc
2014-11-04 · 超过48用户采纳过TA的回答
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:103万
展开全部
迭代法 比你简单

// 求m和n的最大公约数

public static int gongyue(int a,int b){
if(a<b){
int temp;
temp=a;
a=b;
b=temp;
}
if(0==b){
return a;
}
return gongyue(b,a%b);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0adf2dfc62
2014-11-04 · TA获得超过578个赞
知道小有建树答主
回答量:553
采纳率:50%
帮助的人:217万
展开全部
    public static void main(String[] args) {
        int m;
        int n;
        int temp;
        Scanner input = new Scanner(System.in);
        m = input.nextInt();
        n = input.nextInt();
        if (m > n) {
            temp = n;
        } else {
            temp = m;
        }
        for (int i = temp; i >= 1; i--) {
            if (m % i == 0 && n % i == 0) {
                System.out.println(i);
                break;
            }
        }
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式