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 的菜鸟,求指点! 展开
 我来答
zjgzhengxian
推荐于2016-03-09 · TA获得超过1276个赞
知道小有建树答主
回答量:736
采纳率:100%
帮助的人:362万
展开全部

能把代码格式化过后再发上来吗?看着累

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++;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式