java怎么让程序不输出_java – 为什么我的程序在某些情况下输出不正确?

我已经在

Java中实现了欧几里德算法,以找到两个给定数字的最大公约数(GCD).

在大多数情况下,我的程序运行正常,我已经用一些随机的数字集进行了测试,但是,我发现在一个案例中(我知道)它给出了一个不正确的输出,这是针对以下组合的数字:

Enter integer a: 8965

Enter integer b: 55

该计划的输出应为55,但情况并非如此.给出的结果如下:

gcd = 1

Execution time: 0.005747ms.

我不确定为什么这个特定的数字组合会导致问题,因为它适用于其他数字,例如,这是一组不同数字的结果:

Enter integer a: 15000

Enter integer b: 5325

gcd = 75

Execution time: 0.007389ms.

import java.util.Scanner;

public class EuclideanAlgorithm {

public static void main (String [] args) {

int a, b;

try(Scanner sc = new Scanner(System.in);) {

System.out.print("Enter integer a: ");

a = sc.nextInt();

System.out.print("Enter integer b: ");

b = sc.nextInt();

}

long start = System.nanoTime();

int answer = EuclideanAlgorithm(a, b);

long stop = System.nanoTime();

System.out.println("gcd = " + answer);

System.out.println("Execution time: " + ((stop - start) / 1e+6) + "ms.");

}

public EuclideanAlgorithm() {}; //Suppress default constructor

private static int EuclideanAlgorithm(int a, int b) {

if ( (a == 0) || (b == 0)) {

return 0;

}

if (b > a) {

int temp = a;

a = b;

b = temp;

}

int gcd = 1;

while(gcd != 0) {

if( (a % b) == 0) {

break;

}

gcd = a % b;

a = b;

b = gcd;

}

return gcd;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值