我需要在我的Java应用程序中解决这个方程:

(1080 * j + 1) modulo 7 = 0

有没有更安全的方法来获取这个值而不是这个代码?我对循环状态不太满意。
    int j = 1;
    int e = 7;
    boolean found = false;
    double r = 0;

    while (!found) {
        r = (1080 * j + 1);
        found = r % e == 0;
        j++;
    }

    int t = (int) (r / e);

最佳答案

你可以用数学显著地提高你的答案你需要找到一个乘以1080的数,它会得到一个6乘7的余数(因为在加1之后,它应该可以被7整除)现在1080给出余数2模7所以你需要找到乘以2的数字,得到6的模7。让我们检查所有7个可能的剩余:

0 * 2 = 0 (modulo 7)
1 * 2 = 2 (modulo 7)
2 * 2 = 4 (modulo 7)
3 * 2 = 6 (modulo 7)
4 * 2 = 1 (modulo 7)
5 * 2 = 3 (modulo 7)
6 * 2 = 5 (modulo 7)

所以你的问题的唯一解决方案是给出remainder 3 (modulo 7)的数字,所有这些数字都是方程的解。

10-08 02:35