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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 风雪再现 中级黑马   /  2013-7-7 17:37  /  2270 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

输入任意两个整数,并输出最小公倍数,望各位大神解决

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

6 个回复

正序浏览
static void Main(string[] args)
        {
            int num1, num2;
            Console.WriteLine("请输入两个整数num1和num2(num1<num2)");
            Console.WriteLine("请输入num1:");
            string str1 = Console.ReadLine();
            Console.WriteLine("请输入num2:");
            string str2 = Console.ReadLine();
            if (int.TryParse(str1, out num1) && int.TryParse(str2, out num2))
            {
                int num3 = 1;             //最大公约数
                int i = 1;        //迭代变量,小于最大数的平方根
                do
                {
                    if (num1 % i == 0 && num2 % i == 0)      //当num1和num2%i都为0时,说明i是两个数的约数
                    {
                        num3 = i;
                    }
                    i++;
                } while (i < Math.Sqrt(num2));        //最后退出循环时,所得到的约数就是最大公约数
                Console.WriteLine("最小公倍数是:" + num1 * num2 / num3);   //输出最小公倍数
            }
            else
            {
                Console.WriteLine("你输入的数字有误!");
            }
            Console.ReadKey();
        }

回复 使用道具 举报
本帖最后由 赵宗荣 于 2013-7-8 13:33 编辑

  1. <P> Console.WriteLine("请输入1个数:");
  2.             string str1 = Console.ReadLine();
  3.             Console.WriteLine("请再次输入1个数:");
  4.             string str2 = Console.ReadLine();</P>
  5. <P>            </P>
  6. <P>            int i, j;
  7.             if (int.TryParse(str1, out i) && int.TryParse(str2, out j))
  8.             {
  9.                 int m = i > j ? i : j;
  10.                 int n = i + j;</P>
  11. <P>                if (i == j)
  12.                 {
  13.                     Console.WriteLine("最小公倍数是{0}", i);
  14.                 }</P>
  15. <P>                else if (m % i == 0 && m % j == 0)
  16.                 {
  17.                     Console.WriteLine("最小公倍数是{0}", m);
  18.                 }</P>
  19. <P>                else
  20.                 {
  21.                     while (n % i != 0 || n % j != 0)
  22.                     {
  23.                         n++;
  24.                     }
  25.                     Console.WriteLine("最小公倍数是{0}", n);
  26.                 }
  27.             }
  28.             else
  29.             {
  30.                 Console.WriteLine("输入的值不合法!");
  31.                 return;
  32.             }
  33.             Console.ReadKey();</P>
复制代码
回复 使用道具 举报
  1. /*
  2. 辗转相除法(源于离散数学)
  3. m     n  r //m,n两个整数,r为余数
  4. 64=1*36+28
  5. 36=1*28+8
  6. 28=3*8+4
  7. 8=2*4+0
  8. 4为所求最大公约数
  9. 64*36/4=576 最小公倍数
  10. */

  11. import java.util.Scanner;
  12. class GCD_LCM{
  13.         /*最大公约数*/
  14.         public static int gcd(int m,int n){//m,n代表两个整数
  15.                 int r=0;//r代表余数
  16.                 while((r=m%n)!=0){
  17.                   m=n;
  18.                   n=r;
  19.                 }
  20.                 return n;
  21.         }
  22.         /*最小公倍数*/
  23.         public static int lcm(int m,int n){
  24.          
  25.             return  m/gcd(m,n)*n;//两数之积除以最大公约数=最小公倍数
  26.         }
  27.         public static void main(String[] args){
  28.                Scanner scan=new Scanner(System.in);
  29.                   int m=scan.nextInt();
  30.                   int n=scan.nextInt();
  31.                 System.out.println(m+"和"+n+"的最大公约数: "+gcd(m,n)+"\n"+
  32.                                  m+"和"+n+"的最小公倍数: "+lcm(m,n));
  33.         
  34.         }

  35. }
复制代码
回复 使用道具 举报
尹桥印 发表于 2013-7-7 19:24
从大的那个数开始从1遍历,遍历的过程中将遍历的数与大数相乘,乘积除以小数,判断余数为0
个人观点 ...

我感觉方法可以
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马