Java最大公约数 最小公倍数

/**
 * CommonDiviser.java
 * @author:王超
 * 2017年3月15日
 * wangChaoPA实习工作练习.com.最大公约数和最小公倍数.CommonDiviser
 * Copyright (c) 2007, 2016 Infopower corporation All Rights Reserved.
 */
package wangChaoPA实习工作练习.com.最大公约数和最小公倍数;

import java.util.Scanner;

/**
 * o
 *
 *
 * <p>
 * 输入两个正整数m和n,求其最大的公约数和最小公倍数
 * </p>
 *
 * @author 王超
 * @since 1.0
 * @date 2017年3月16日 下午11:08:18
 * @see 新建|修改|放弃
 * @see wangChaoPA实习工作练习.com.最大公约数和最小公倍数.CommonDiviser 解题思路:辗转相除法,若n>m 1:若n%m ==
 *      0 则m为最大公约数 否则 n%m=k n=m,m=k 重复步骤1直到余数为0 最大公倍数=n*m/最大公约数
 */
public class CommonDiviser
{
    private static Scanner input = new Scanner(System.in);

public static void main(String[] args)
    {
        int n = input.nextInt();
        int m = input.nextInt();
        int zdgys = result(n, m);
        System.out.println("最大公约数是:" + zdgys);
        System.out.println("最大公倍数是:" + n * m / zdgys);
        input.close();
    }

public static int result(int n, int m)
    {
        // 余数
        int k = 0;
        // 使n>m
        if (n < m)
        {
            int t = 0;
            t = n;
            n = m;
            m = t;
        }
        // 直到余数为0
        while (m != 0)
        {
            k = n % m;
            n = m;
            m = k;
        }
        System.out.println(n);
        return n;
    }
}

时间: 2024-10-16 01:24:27

Java最大公约数 最小公倍数的相关文章

poj 3101 Astronomy (java 分数的最小公倍数 gcd)

题目链接 要用大数,看了别人的博客,用java写的. 题意:求n个运动周期不完全相同的天体在一条直线上的周期. 分析:两个星球周期为a,b.则相差半周的长度为a*b/(2*abs(a-b)),对于n个只需求这n个 分数的最小公倍数即可. 分数的最小公倍数 = 分子的最小公倍数/分母的最大公约数 1 import java.util.*; 2 import java.math.*; 3 public class Main { 4 public static int [] t = new int [

12--c完数/最大公约数/最小公倍数/素数/回文数

完数/最大公约数/最小公倍数/素数/回文数 2015-04-08 10:33 296人阅读 评论(0) 收藏 举报  分类: C/C++(60)  哈尔滨工业大学(8)  版权声明:本文为博主原创文章,未经博主允许不得转载. 1.一个正整数的因子是所有可以整除它的正整数.而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数.例如6=1+2+3(6的因子是1,2,3). [cpp] view plain copy #include <stdio.h> #include <math.h

两种方法求最大公约数最小公倍数

<pre name="code" class="cpp">/* *coyright(c)2014 龙城无泪 *All rights reserved *文件名称 digui.c *作者:封尘之魂 *完成日期:20141108 *版本号V1.0 *问题描述:求两个整数的最大公约数最小公倍数 *输入描述:输入两个整数 *输出描述:成功输出最大公约数最小公倍数 */ #include<stdio.h> int main() {int m,n,q,t

最大公约数 最小公倍数--------专题

#include <stdio.h> int gcd(int m,int n){ if(n==0)  return m;else return gcd(n,m%n); } ************* 变形一 int gcd(int m,int n) { if(m%n==0)  return m; else return gcd(n,m%n); } 变形二 int gcd(int m,int n) { return  n==0?  m :  gcd(n,m%n); } 变形三 int gcd(i

Java最大公约数和最小公倍数

最大公约数有下面两种方法: 辗转相除法:又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公约数的算法. 辗转相减法:即尼考曼彻斯法,其特色是做一系列减法,从而求得最大公约数. 以下为Java代码: public class JavaBase { static public int gcd1_1(int x, int y)   //非递归的辗转相除法 { int temp; do{ temp = x % y; x = y; y = temp; }while(temp

java例题_06 最大公约数&amp;最小公倍数

1 /*6 [程序 6 求最大公约数及最小公倍数] 2 题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数. 3 程序分析:利用辗除法. 4 */ 5 6 /*分析 7 * ============================= 8 * 辗转相除法求[最大公约数]: 9 * 如我们计算10和25的最大公约数.用辗转相除法是这么计算的: 10 * 25÷10=2······5 11 * 10÷5=2······0 12 * 那么25和10的最大公约数就是5. 13 * =======

抓其根本(hdu2710 Max Factor 素数 最大公约数 最小公倍数.....)

素数判断: 一.根据素数定义,该数除了1和它本身以外不再有其他的因数. 详见代码. 1 int prime() 2 { 3 for (int i=2; i*i<=n; i++) 4 { 5 if (n%i==0) //不是素数 6 return 1; //返回1 7 } 8 return 0; //是素数返回0 9 } 二.打表,将所有的素数一一列出,存在一个数组里. 详见代码. 1 void prime() 2 { 3 for (int i=2; i<20050; i++) //从2开始一个

最大公约数最小公倍数

int gcd(int a, int b) //最大公约数 { int m,n,r; m=a>=b?a:b; //m保存较大数 n=a<b?a:b; //n保存较小数 r=m%n; //求余数 while(r!=0) //辗转相除 { m=n; n=r; r=m%n; } return n; //返回最大公约数 } int lcm(int a,int b) //最小公倍数 { int t = gcd(a,b); //获取最大公约数 return (a*b)/t; //返回最小公倍数 }

欧几里得算法求最大公约数+最小公倍数

1,两个数互质:如果说两个数的公因数只有1,则可以说这两个数互质. 欧几里得算法求最大公约数: 首先求最大公约数,假设我们要求a和b的最大公约数 设a mod b = c: 可以得到一下的递推过程: a = kb + c ; 假设a , b 的最大公约数为d,则可以得到: a = md , b = nd; 可知m , n 互质: c = a - kb = md - knd = (m-kn)d; 我们已经知道m,n互质,则可以知道n和m-kn互质,则c和b的最大公约数也是d; 所以由以上的推论,我