题目:一个自然数N被8除余1,所得的商N1被8除也余1, 而第二次的商N2(N2为N1除以8的结果) 被8除后余7,将第二次的商N2再除以8得到一个商为a。又知这个自然数N被17除的余数是4。这个N被17除之后的商为M,M被17除之后得到商为B,余数为15,又知道B是a的2倍。求这个自然数。
public class Test {
public static void main(String[] args) {
int n, n1, n2, a, b, m;
// 初始化变量
n = 8 + 1;
// 死循环,直到判断完毕
while (true) {
// 获得M值,因这些判断值跨度比较大,一次相差17,所以先判断。
m = n / 17;
// 当自然数N被17除(N除以17)的余数是4,商为M,并且M除以17的余数为15时进入
if (n % 17 == 4 && m % 17 == 15) {
// 获得B的值,用作跟A判断
b = m / 17;
// 开始判断跨度小的。N1是N除以8的商。
n1 = n / 8;
// N1除以8余1则进入
if (n1 % 8 == 1) {
// N2是N1除以8的商。
n2 = n1 / 8;
// N2除以8余7则继续判断
if (n2 % 8 == 7) {
// 得出N2除以8的商,也就是A
a = n2 / 8;
// 判断B是否是A的两倍,是则进入,打印并跳出死循环。
if (b / a == 2) {
System.out.println("This number is " + n);
break;
}
} else {
n += 8;
}
} else {
n += 8;
}
} else {
n += 8;
}
}
}
}