首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

8除不尽的数 【if语句】,该如何处理

2013-01-25 
8除不尽的数 【if语句】一个自然数N被8除余1,所得的商N1被8除也余1, 而第二次的商N2(N2 为N1 除以8的结果)

8除不尽的数 【if语句】
一个自然数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 DivideBy8
{
public static void main(String[] args)
{
//第一种算法,从a=1开始计算这个数;按第2个逻辑从B=2开始计算,看两个数是否相等。
int x,y;
System.out.println(" ------------ 第一种算法 -----------------");
for(int i=1;;i++)
{
x=((8*i+7)*8+1)*8+1;
y=(2*i*17+15)*17+4;
if(x==y)
{
System.out.println("This number is "+x+" and B is "+
(2*i)+" and a is "+i);
break;
}
}
//第二种算法,从513开始计算,看是否符合题目的两个逻辑。
System.out.println(" ------------ 第二种算法 -----------------");
for(int i=513;;i++)
{
if((i%8==1)&&(i%17==4)&&((i/8)%8==1)&&((i/17)%17==15)&&((i/64)%8==7)&&
(i/(17*17)==2*(i/(8*8*8))))
{
System.out.println("This number is "+i+" and B is "+(i/(17*17))+
" and a is "+(i/(8*8*8)));
break;
}
}

}
}


[解决办法]
我也来一个,哈哈!

//下面是方法体,自己贴进方法哈!
int n, n1, n2, a, b, m;
n = 8 + 1;// 初始化变量
while (true) {//死循环,直到判断完毕
m = n / 17;//获得M值,因这些判断值跨度比较大,一次相差17,所以先判断。
if (n % 17 == 4 && m % 17 == 15) {//当自然数N被17除(N除以17)的余数是4,商为M,并且M除以17的余数为15时进入
b = m / 17;//获得B的值,用作跟A判断
n1 = n / 8;//开始判断跨度小的。N1是N除以8的商。
if (n1 % 8 == 1) {//N1除以8余1则进入
n2 = n1 / 8;//N2是N1除以8的商。
if (n2 % 8 == 7) {//N2除以8余7则继续判断
a = n2 / 8;//得出N2除以8的商,也就是A
if (b / a == 2) {//判断B是否是A的两倍,是则进入,打印并跳出死循环。
System.out.println("This number is " + n);
break;
}
} else {
n += 8;
}
} else {
n += 8;
}
} else {
n += 8;
}
}

热点排行