A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求任意计算两个数的最小公倍数

6 个回复

倒序浏览
  int num1, num2, temp;
            num1 = Convert.ToInt32(Console.ReadLine());
            num2 = Convert.ToInt32(Console.ReadLine());
            temp = Math.Max(num1, num2);
            num2 = Math.Min(num1, num2);//num2中放较小的数
            num1 = temp;//num1中放较大的数
            int result=num1*num2;
            if (num1 * num2 != 0)
            {
                while (num2 != 0)
                {
                    num1 = (num1 > num2) ? num1 : num2;
                    int i = num1 % num2;
                    num1 = num2;
                    num2 = i;
                }
                Console.WriteLine("最小公倍数为:"+(result)/num1);
            }
            Console.ReadKey();
回复 使用道具 举报
int num1;
            int num2;
            if (int.TryParse(Console.ReadLine(), out num1) && int.TryParse(Console.ReadLine(), out num2))
            {
                int temp = Math.Max(num1, num2);
                num2 = Math.Min(num1, num2);//num2中放较小的数
                num1 = temp;//num1中放较大的数

                int result = num1 * num2;
                if (num1 * num2 != 0)
                {

                    while (num2 != 0)
                    {
                        num1 = (num1 > num2) ? num1 : num2;
                        int i = num1 % num2;
                        num1 = num2;
                        num2 = i;

                    }


                }
                Console.WriteLine("最小公倍数为:" + (result) / num1);
            }
            else
            {
                Console.WriteLine("输入的数据错误");
            }

            Console.ReadKey();
回复 使用道具 举报
                 由于最小公倍数  = a * b / 最大公约数,所以先算出最大公约数:
                 static void Main()
                 {
                        Console.WriteLine("请输入第一个数字");
                        int a = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine("请输入第二个数字");
                        int b = Convert.ToInt32(Console.ReadLine());
                        var c = m * n / MaxFaxtor(m,n);;
                        Console.WriteLine(c);
                        Console.ReadKey();
                }

                /// <summary>
                /// 求最大公约数
                /// </summary>
                /// <param name="m"></param>
                /// <param name="n"></param>
                /// <returns></returns>
                public static int MaxFaxtor(int m, int n)
                {
                        var c = 0;
                        var a = m * n;
                        var b = 0;
                        if( m < n )
                        {
                                b = m;
                                m = n;
                                n = b;
                        }
                        do
                        {
                                c = m % n;
                                m = n;
                                n = c;
                        } while(c != 0);
                        return m;
                }

回复 使用道具 举报
本帖最后由 camml 于 2013-7-8 13:27 编辑

  1. <P>import java.util.*;
  2. class Demo{
  3.         public static void main(String args[]){
  4.                 //在控制台上输入两个不为0整数
  5.                 int m,n;
  6.                 Scanner s=new Scanner(System.in);
  7.                 System.out.println("请输入第一个数字(整数且不为0) : ");
  8.                 m=s.nextInt();
  9.                 System.out.println("请输入第二个数字(整数且不为0) : ");
  10.                 n=s.nextInt();
  11.                
  12.                 int total, r;
  13.                 total = m*n;
  14.                 do {
  15.                         //循环保证m的值是最大的那个值
  16.                         if(m<n)
  17.                           {
  18.                                 int t = m;
  19.                                      m = n;
  20.                                      n = t;
  21.                            }
  22.                 r=m%n;
  23.                 m=n;
  24.                 n=r;
  25.                 }while(r!=0);
  26.         System.out.println("最小公倍数是:"+total/m);
  27.         }
  28. }</P>
复制代码
当程序运行到最后,最大公约数也已经计算出来,就是m,所以System.out.println("最大公约数是:"+m)可以打印出来最大公约数。
希望对楼主有帮助。
回复 使用道具 举报
楼主说的貌似是任意两个数的最小公倍数,C# 整形(int,long等)都有表示数值的范围,这个如果说考虑超出这个范围,怎么解决呢?同求解。
回复 使用道具 举报
int u, v,k,m;
            u = int.Parse(Console.ReadLine());
            k=u;
            v = int.Parse(Console.ReadLine());
            m=v;
            if (u == v)
                System.Console.Write("最小公倍数为"+v);
            else if (u > v)
            {
                while(true)
                {
                    if ((u % v== 0)&&(u%k==0))
                        {
                        System.Console.WriteLine("最小公倍数为" + u);
                        break;
                    }
                        
                    else
                    u++;
                }
            }
            else
                while(true)
                {
                      if ((v % u == 0)&&(v%m==0))                    {
                        System.Console.WriteLine("最小公倍数为" + v);
                        break;
                    }
                     
                    else

   v++;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马