RT,我的想法是定义三个变量,在一个无限循环里让三个变量自增,当什么时候变量值满足表达式时,循环退出,但是感觉有点问题,因为自增的时候这三个数字是同时增加的,例如初始化x=0,y=0,z=0,循环中x++,y++,z++,那么这三个数值会一样变化,这样就不能算出来这三个变量的值了,望有人能指点一下,谢谢了

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【swloveqq】截止到2008-07-22 11:10:59的历史汇总数据(不包括此帖):
    发帖的总数量:4                        发帖的总分数:170                      每贴平均分数:42                       
    回帖的总数量:12                       得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:4                        结贴的总分数:170                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    首先你这个问题涉及到分数运算,所以如果想得到精确的值,就不能使用除法,而应该使用如下的形式:
    (ab+bc+ac)/abc=3/7

    7(ab+bc+ac)=3abc
    好了,现在可以开始遍历了,不过因为你做的是无限循环,万一这个题目没有解,程序无法终止,所以应该设定一个遍历范围,比如a<100000之类。
    遍历方法是:
    for(long a=3;a<=100000;a++){
      for(long b=a;b<=100000;b++){
        for(long c=b;c<=100000;c++){
          if(7*(a*b+b*c+a*c)==3*a*b*c){
            System.out.println(a,b,c);
          }
        }
      }
    }
      

  3.   


    int x = 1;
    int y = 1;
    int z = 1;
    while(true){
        if(((1/x)+(1/y)+(1/z))*7==3)
            break;
        x++;
        y++;
        z++;
    }不知道楼主是不是这个意思?
      

  4.   

    用三个for循环嵌套肯定是可以得到结果的,不过应该是最笨的方法.3/7=1/7+1/7+1/7不妨设a<b<c,b=7,那么就可以只用两重循环得到了.而且a循环只需要2~6
      

  5.   

    修改为:
    for(long a=3;a <=6;a++){ 
      for(long b=a+1;b <=100000;b++){ 
        for(long c=b+1;c <=100000;c++){ 
          if(7*(a*b+b*c+a*c)==3*a*b*c){ 
            System.out.println(a,b,c); 
          } 
        } 
      } 
      

  6.   

    public class Tttt {public static void main(String[] args) {
    for(int a = 3; a <= 6; a++) {
    for(int b = a + 1; b < 14 * a /(3 * a - 7) ; b++) {
    for(int c = b + 1; c <= 7*a*b / (3*a*b - 7*a - 7*b); c++) {
    if(7*(a*b + a*c + b*c) == 3*a*b*c) {
    System.out.println("a:b:c " + a + ":" + b + ":" + c);
    }
    }
    }
    }
    }
    }运行结果:
    a:b:c 3:11:231
    a:b:c 3:12:84
    a:b:c 3:14:42
    a:b:c 3:15:35
    a:b:c 4:6:84
    a:b:c 4:7:28
    至于为什么这样做 吃饭回来再说 呵呵
      

  7.   

    设定 a<b<c那么 a可以的取值范围 为  3~7那么 b可以的 取值 范围可以 根据  a的值 定义到最小值和最大值  比如 a 取3  那么 剩下 3/7-1/3 给  1/b+1/c  所以b可以的 取值范围为 (3/7-1/3) >b>(3/7-1/3)/2依此 推!不知道我理解正确否....
      

  8.   

    首先LZ的意思是3个不同的自然数
    那么我们就假设是a<b<c
    因为1/a + 1/b + 1/c = 3/7
    所以a必然小于7(至少有一个大于1/7)
    而1/2 > 3/7
    所以a>=3 a<7
    a确定了
    那么b的范围也确定了
    设m=3/7 - 1/a
    也就是
    1/b + 1/c = m
    因为b<c 
    所以1/b > 1/c
    2/b > m
    b< 2/m = 2/(3/7 - 1/a)
    整理得到b < 14 * a /(3 * a - 7)
    a b 都确定了 c的范围自然也就确定了
    (因为要给c设定上限 也就是c<= 某个数
    这些c都满足1/a + 1/b + 1/c >= 3/7)
    其实这里c已经没必要用循环判断了
    int c = (int)(7*a*b / (3*a*b - 7*a - 7*b));
    if(c > 0 && 7*(a*b + a*c + b*c) == 3*a*b*c) {
       System.out.println("a:b:c " + a + ":" + b + ":" + c);
    }