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);
}
} 展开
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);
}
} 展开
4个回答
展开全部
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
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
展开全部
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后面就不会执行了!
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后面就不会执行了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
迭代法 比你简单
// 求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);
}
// 求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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询