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

 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  * ==============================
14  * 转换过来就是,求m和n的最大公约数,m%n==a,n%a==0,则m和n的最大公约数是a
15  *
16  * 【最小公倍数】=m*n/a(即:两个数相乘再除以其最大公约数)
17  *
18  * 综上,此题需要先利用辗转相除法求出最大公约数,再利用性质求出最小公倍数
19  *
20  * */
21
22 package homework;
23
24 import java.util.Scanner;
25
26 public class _06 {
27
28     public static void main(String[] args) {
29         System.out.println("请输入两个正整数m,n:");
30         //从键盘获得m,n两个整数
31         Scanner sc=new Scanner(System.in);
32         int m=sc.nextInt();
33         int n=sc.nextInt();
34 //        System.out.println(m+" "+n);
35         int x=m,y=n;
36         //利用for循环来控制计算的步骤
37         for (int a=x; a>0; ) {
38             a=x%y;
39             x=y;
40             y=a;
41         }
42         System.out.println(m+","+n+"的最大公约数为:"+x+"\n"+m+","+n+"的最小公倍数为:"+m*n/x);
43
44     }
45
46 }

原文地址:https://www.cnblogs.com/scwyqin/p/12294200.html

时间: 2024-10-25 17:23:14

java例题_06 最大公约数&最小公倍数的相关文章

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最大公约数 最小公倍数

/** * 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 * 

Java程序设计之最大公约数和最小公倍数

题目:输入两个正整数number1和number2,求其最大公约数和最小公倍数. 算法:较大数和较小数取余,较小数除余数,一直到余数为0时,为最大公约数(辗转相除法):最大公倍数numbe1*number2/(最大公约数),下面直接上代码: import java.util.Scanner; public class Max_Min { static int n1; public static void main(String[] args) { Max_Min m = new Max_Min(

抓其根本(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开始一个

特殊数求解(最大公约数/最小公倍数/素数)

1.最大公约数(GCD) (1)如果a,b全为0,GCD不存在 (2)如果a.b其中之一为0,则GCD为a.b中非零的那个 (3)如果a.b都不为0,则使新的a=b,b=a%b,然后重复过程. 非递归 int gcd(int a, int b){ while (b != 0){ int t = a%b; a = b; b = t; } return a; } 递归 int gcd(int a,int b){ return b!=0?gcd(b,a%b):a; } 2.最小公倍数(LCM) 最小公

最大公约数最小公倍数

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; 所以由以上的推论,我