我需要在我的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)
的数字,所有这些数字都是方程的解。