using System;
using System.Collections.Generic;
using System.Text;namespace test3
{
    class Program
    {
        static void Main()
        {
            int a, b;
            int z=1;           
            Console.WriteLine("请输入两个正整数:");
            if (int.TryParse(Console.ReadLine(), out a) && int.TryParse(Console.ReadLine(), out b))
            {
                if (a > b)
                {
                    Cmth.swap(ref a, ref b);
                    for (int i = a; i < 0; i--)
                    {
                        if (a % i == 0 && b % i == 0)
                        {
                            z = i;
                            break;
                        }
                        else
                        {
                            Console.WriteLine("没有公约数!");
                        }
                    }
                    
                }
                Console.WriteLine("最大公约数为:{0}", z);
                Console.WriteLine("最大公倍数为:{0}", a * b / z);
            }
    
        }
    }
    public class Cmth
    { 
        public int x;
        public int y;
        public static void swap(ref int a,ref int b)
        {
            int temp = a;
            a = b;
            b = temp;
        }
    }
 
}//我输出4,6怎么结果不对啊,晕了!

解决方案 »

  1.   

    至少这里就是一个错误,改过来再试试吧..
    for (int i = a; i < 0; i--)
                        {
                            if (a % i == 0 && b % i == 0)
                            {
                                z = i;
                                break;
                            }
                            else
                            {
                                Console.WriteLine("没有公约数!");
                            }
                        }
    将for (int i = a; i < 0; i--)改成for (int i = a; i > 0; i--)
      

  2.   

    这样改下就OK了: int a, b;
                int z=1;           
                Console.WriteLine("请输入两个正整数:");
                if (int.TryParse(Console.ReadLine(), out a) && int.TryParse(Console.ReadLine(), out b))
                {
                    if (a > b)
                    {
                        Cmth.swap(ref a, ref b);
                    }
                    for (int i = a; i > 0; i--)
                    {
                        if (a % i == 0 && b % i == 0)
                        {
                            z = i;
                            break;
                        }
                    }                    
                    Console.WriteLine("最大公约数为:{0}", z);
                    Console.WriteLine("最小公倍数为:{0}", a * b / z);
                }测试如下:请输入两个正整数:
    4
    6
    最大公约数为:2
    最小公倍数为:12