【算法与数据结构】最大公约数和最小公倍数的Java程序

GCD最大公约数

方法:欧几里得算法(辗转相除法),

【思想】递归

【思路】

【代码】

1 public class Main {
2     public static int gcd(int p, int q) {
3         if (q == 0) {
4             return p;
5         }
6         int r = p % q;
7         return gcd(q, r);
8     }
9 }

LCM最小公倍数

追求方便公式法求解。

【思路】

【代码】

 1 public class Main {
 2     public static int gcd(int p, int q) {
 3         if (q == 0) {
 4             return p;
 5         }
 6         int r = p % q;
 7         return gcd(q, r);
 8     }
 9     public static int lcm(int a, int b) {
10         return (a * b)/gcd(a, b);
11     }
12 }
时间: 2024-10-12 20:02:39

【算法与数据结构】最大公约数和最小公倍数的Java程序的相关文章

一步一步写算法(之 最大公约数、最小公倍数)

原文:一步一步写算法(之 最大公约数.最小公倍数) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 求解最小公倍数和最大公约数是我们开始编程的时候经常需要练习的题目.从题面上看,好像我们需要求解的是两个题目,但其实就是一个题目.那就是求最大公约数?为什么呢?我们可以假想这两个数m和n,假设m和n的最大公约数是a.那么我们可以这样写: m = b *a: n = c * a; 所以m和n的最小公倍数就应该是a*b*c啊,那不就是m * n

算法基础练习--最大公约数和最小公倍数

var gcd = function (n1,n2){ //最大公约数 if(n1 == n2 ){return n1;} var bigger = 0; var smaller = 0; if(n1 > n2){bigger = n1;smaller = n2;} else {bigger = n2;smaller = n1;} for(var j = 1; j <= smaller ; j++){ if(smaller%(smaller/j) != 0){continue;} if(big

求两个正整数的最大公约数和最小公倍数(java)

1 package com.hpu.bai; 2 3 import java.util.Scanner; 4 5 public class Common { 6 public int mincom(int m,int n){ 7 int temp;int t = 0; 8 if(m<n){ 9 temp = n; 10 n =m; 11 m =temp; 12 } 13 if(m%n ==0) return n; 14 else 15 return mincom(m-n,n); 16 } 17

【算法与数据结构】汉诺塔问题Java实现

思路:递归 [代码] 1 public class Main { 2 public static void hanoi(int n, int x, int y, int z) { 3 if (n == 1) { 4 System.out.print(x + "----->" + z); 5 }else { 6 hanoi(n - 1, x, z, y);//把前面n-1个移动到y上 7 System.out.print(x + "----->" + y)

纸上谈兵: 算法与数据结构

算法和数据结构是计算机科学的核心内容.作为程序员,编程是我们的实战项目.然而,写出程序还不够.一个程序在应对一些大型而复杂的情况时,会耗费大量的时间.我们可以很容易写出一个从文件中找到一个词的程序,比如逐词扫描,看是否相符.但如果我们的文件有几十TB,而且要从文件中找到上百个词,逐个扫描的办法就几乎不可行.我们需要优化程序,以便我们的程序可以应对复杂问题.算法研究解决问题的方法,而数据结构则是设计一种更好的组织数据和使用数据的方式.两者有很强的相互依赖关系,所以往往放在一起讨论. 我将这一系列文

最大公约数、最小公倍数算法

#include <iostream> using namespace std; //举例: // 2 | 8 6 // ---------- // 4 3 // 所以:gcd=2,lcm=2*4*3=24 //求最大公约数:辗转相除法 // 1. a ÷ b,令r为所得余数(0≤r<b) // 若 r = 0,算法结束:b 即为答案. // 2. 互换:置 a←b,b←r,并返回第一步 int gcd1(int m, int n) { int r; while(n) { r = m %

一天一个算法:求俩个数的最大公约数和最小公倍数

求俩个数的最大公约数和最小公倍数 解答: 当较大数除以较小数余数等于0时,较小数为最大公约数. 两数相乘结果除以它们的最大公约数为最小公倍数. int cdivisor(int x1,int y1) { int r,temp; if (x1<y1) { temp =x1; x1 = y1; y1 = temp; } while(x1%y1)//当较大数除以较小数余数等于0时,较小数为最大公约数 { r=x1%y1; x1=y1; y1=r; } return y1; } int cmultipl

C语言之基本算法10—最大公约数和最小公倍数

/* ================================================================== 题目:求两个数的最大公约数和最小公倍数. ================================================================== */ #include<stdio.h> main() { int m,n,r,t,j,q; printf("输入两整数:\n"); scanf("%d

求最大公约数 和 最小公倍数 常见算法

#include <stdio.h>int main(){ int a,b,t,c,m,n; scanf("%d%d",&a,&b); m=a; n=b; //1.辗转相除法求最大公约数 /*while(b!=0) { c = a%b; a = b; b = c; } printf("最大公约数: %d\n",a);//最大公约数 printf("最小公倍数: %d\n",m*n/a);//最小公倍数 */ //2.相