static void Main(string[] args)
        {
            for(int i=1;i<335;i+=1)
            {
                if (Mini(i,667-i) == 120 * Maxi(i,667-i))
                {
                    Console.WriteLine(i.ToString() + "," + (667 - i).ToString());                    
                }
            }            
        }       static int Mini(int small,int big)
        {
            for(int i=big;i<small*big;i+=1)
            {
                if(i%small == 0 && i%big==0)
                {
                    return i;
                }
            }
            return small * big;
        }        static int Maxi(int small,int big)
        {
            for (int i = small; i > 1; i -= 1)
            {
                if (small % i == 0 && big % i == 0)
                {
                    return i;
                }
            }
            return 1;
        }
      

解决方案 »

  1.   

    115 552
    232 435#include <iostream>
    using namespace std;
    //最大公约数
    int GCD(int m,int n) { 
        int r;     while(n != 0) { 
            r = m % n; 
            m = n; 
            n = r; 
        }  return m;
    }
    int main()
    {
    int i = 667;
    for (i = 1; 2*i < 667; i++)
    {
    int m = GCD(i,667-i);
                    //最大公约数*最小公倍数=两数乘积
    if (120*m*m==i*(667-i))
    {
      cout<<m<<endl;
    cout<<i<<"\t"<<667-i<<endl;
    }
    }
    return 0;
    }
      

  2.   


      staticvoid Main(string[] args)
            {for(int i=1;i<335;i+=1)
                {if (Mini(i,667-i)==120* Maxi(i,667-i))
                    {
                        Console.WriteLine(i.ToString()+","+ (667- i).ToString());                    
                    }
                }            
            }staticint Mini(int small,int big)
            {for(int i=big;i<small*big;i+=1)
                {if(i%small==0&& i%big==0)
                    {return i;
                    }
                }return small* big;
            }staticint Maxi(int small,int big)
            {for (int i= small; i>1; i-=1)
                {if (small% i==0&& big% i==0)
                    {return i;
                    }
                }return1;
            }
    这好像有点问题吧?为什么是小于337 和return1?
      

  3.   


                int m;//2者中小数 n=667-m
                List<int> x = new List<int>();
                for (int i = 1; i < 334; i++)
                {
                    int temp = 120 * (667 - i);
                    if (temp % i != 0)
                    {
                        continue;
                    }
                    else
                    {
                        int div = temp / i;                    
                        int b = (int)System.Math.Sqrt(div);
                        if(b*b==div)
                            x.Add(i);                   
                    }
                }
                for (int i = 0; i < x.Count; i++)
                {
                    m = x[i];
                    MessageBox.Show(m.ToString());
                }
      

  4.   


            private static void suanfa1()
            {
                int X = 0;
                int Y = 0;
                for (;X<667;X++)
                    for (Y = 0; Y < 667; Y++)
                    {
                        if (X + Y != 667)
                            continue ;
                        if (min(X, Y) / max(X, Y) != 120)
                            continue ;
                        Console.WriteLine(string.Format("x={0};y={1};min={2};max={3}", X, Y, min(X, Y), max(X, Y)));
                    }
            }
            /// <summary>
            /// 最小公倍数
            /// </summary>
            /// <param name="x"></param>
            /// <param name="y"></param>
            /// <returns></returns>
            private static int min(int x, int y)
            {
                for (int i = (x < y ? x : y); i<10000 ; i++)
                {
                    if (i  % y == 0&&i%x==0)
                        return i;
                }
                return 0;
            }
            /// <summary>
            /// 最大公约数
            /// </summary>
            /// <param name="x"></param>
            /// <param name="y"></param>
            /// <returns></returns>
            private static int max(int x, int y)
            {
                for (int i =x>y?x:y; i > 0; i--)
                {
                    if (x % i == 0 && y % i == 0)
                        return i;
                }
                return 0;
            }