import javax.swing.JOptionPane;
publicclassGreattestCommonDivisor{publicstaticvoidmain(String[]args){Stringout="请输入一个...
public class GreattestCommonDivisor{ public static void main(String[] args){ String out = "请输入一个大于零的整数。"; String data = JOptionPane.showInputDialog(null,out); int inputdata1 = Integer.parseInt(data); data = JOptionPane.showInputDialog(null,out); int inputdata2 = Integer.parseInt(data); int gcd = 1; int i = 2; while(i <= inputdata1 && i <= inputdata2){ if(inputdata1 % i ==0 && inputdata2 % i == 0){ gcd = i; i++; } } //上面的循环还可以用下面注释的for循环体来完成; /* for(int i = 2;i <= inputdata1 && i <= inputdata2;i++){ if(inputdata1 % i == 0 && intputdata2 % i ==0) gcd = i; }*/ String out1 = "整数" + inputdata1 + "和" + "整数" + inputdata2 + "的最大公约数为:" + gcd; JOptionPane.showMessageDialog(null,out1); }}哪位大神帮忙看看这个程序编译和运行的时候都没错,但是求最大公约数,输2和4的时候很快就能出来结果,输两个大的数,比如24和42就半天运行不出来,什么原因呢?刚学java 的菜鸟,求指点!
展开
展开全部
能把代码格式化过后再发上来吗?看着累
while(i <= inputdata1 && i <= inputdata2){
if(inputdata1 % i ==0 && inputdata2 % i == 0){
gcd = i;
i++;//这段话应该放在if判断外面,否则就是死循环了
}
}
改动为
while(i <= inputdata1 && i <= inputdata2){
if(inputdata1 % i ==0 && inputdata2 % i == 0){
gcd = i;
}
i++;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询