java 被零除,在这个运行欧几里得算法寻找最大公约数的程序中找不到问题

628mspwn  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(110)
public static long[] simp (long [] a) {
    long c = a[0];
    long d = a[1];
    if ( a[0]<0 ) {
        a[0] = -1*a[0];
    }
    if (a[1]>a[0]) {
        long v = a[0];
        a[0]=a[1];
        a[1]=v;
    }
    while (a[1] > 0) {
        long t = a[0];
        a[0] = a[1];
        a[1] = t%a[1];
        System.out.println(a[0]+"/"+a[1]);
    }
    a[0] = c/a[0];
    a[1] = d/a[0];
    System.out.println(a[0]+"/"+a[1]);
    return a;
}

我按照欧几里得算法的步骤,但当一个被零除的问题出现时,我惊呆了,我不知道这是怎么发生的。

nmpmafwu

nmpmafwu1#

问题出在下面两行。

a[0] = c/a[0];
a[1] = d/a[0];

第一个语句将使[0]为0,因为c为0。下一个语句将为1/0。

相关问题