JAVA 求最小公因数

JAVA 求最小公因数

文章目录

  • JAVA 求最小公因数
    • 方法一:枚举法的第一种
    • 方法一:枚举法的第二种
    • 方法二:展转相除法(欧几里德算法)
    • 方法三:递归
    • 拓展 求最小公倍数公式为
    • 综合 辗转相除法+递归 求n个数的最大公约数和最小公倍数

题目:任意输入两个整数,如何求他们的最大公约数?

最大公约数:也称最大公因数,最大公因子,是指两个或多个整数共有约数中最大的一个。

方法一:枚举法的第一种

先输入两个整数,然后比较两个数的大小,大的整数对小的整数求余,若不为0,则让小的整数-1,再继续前面的求余操作,直至最后跳出循环,输出最大公约数。

package CSDN.资料一;

import java.util.Scanner;

/*题目:任意输入两个整数,如何求他们的最大公约数?
*最大公约数:也称最大公因数,最大公因子,是指两个或多个整数共有约数中最大的一个。
* 方法一:枚举法
* 先输入两个整数,然后比较两个数的大小,大的整数对小的整数求余,若不为0,则让小的整数-1,再继续前面的求余操作,直至最后跳出循环,输出最大公约数。
 */
public class GreatestCommonDivisor01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        int n = scanner.nextInt();
        System.out.println("请输入第二个整数:");
        int m = scanner.nextInt();

        //x保存小的那个数
        int x;
        if(m>n){
            x=n;
        }else{
            x=m;
        }

        //大的整数对小的整数求余,若不为0,则让小的整数-1
        while(m%x!=0||n%x!=0){
            x--;
        }
        System.out.println(x);

    }
}

运行结果:
在这里插入图片描述

方法一:枚举法的第二种

package CSDN.资料二;

import java.util.Scanner;

/*
*枚举法
*/
public class GreatestCommonDivisor03 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个自然数");
        int a = in.nextInt();
        System.out.println("请再输入一个自然数");
        int b = in.nextInt();

        int gcd = 1;
        for (int i = 2; i <=a&&i<=b ; i++) {
            if(a%i==0&&b%i==0){
               gcd = i;
            }
        }

        System.out.println(a+"和"+b+"的最大公约数是"+gcd);


    }
}

方法二:展转相除法(欧几里德算法)

辗转相除法: gcd(a,b) = gcd(b,a mod b) (不妨设a>b 且r=a mod b ,r不为0)
在这里插入图片描述
如果要用辗转相除法求几个数的最大公约数,能够先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是全部这些数的最大公约数。

package CSDN.资料二;

import java.util.Scanner;

/*
* 展转相除法(欧几里德算法)
*/
public class GreatestCommonDivisor04 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个自然数");
        int a = in.nextInt();
        System.out.println("请再输入一个自然数");
        int b =in.nextInt();
        int oa = a;
        int ob = b;
        while(b!=0){
            int r = a%b;
            a=b;
            b=r;
        }
        System.out.println(oa+"和"+ob+"的最大公约数是"+a);

    }
}

将上述的方法二封装成方法

package CSDN.资料三.封装成方法;

import java.util.Scanner;

public class GreatestCommonDivisor05 {
    public static void main(String[] args) {
        int a = 0,b=0;
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            a =sc.nextInt();
            b=sc.nextInt();
            System.out.println("欧几里得:"+gcdWhile(a,b));
        }
    }

    public static int gcdWhile(int a,int b){
        while(b>0){
            int temp = a%b;
            a=b;
            b=temp;
        }
        return a;
    }


}


方法三:递归

package CSDN._03资料三.封装成方法.递归;

import java.util.Scanner;

public class GreatestCommonDivisor06 {
    public static void main(String[] args) {
        int a = 0,b=0;
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            a =sc.nextInt();
            b=sc.nextInt();

            System.out.println("递归1:"+gcdRecursion1(a,b));
            System.out.println("递归2:"+gcdRecursion2(a,b));
        }
    }

  public static int gcdRecursion1(int a,int b){
        return b==0?a:gcdRecursion1(b,a%b);
  }

  public static int gcdRecursion2(int a,int b){
        if(a%b==0){
            return b;
        }else{
            return gcdRecursion2(b,a%b);
        }
  }


}


拓展 求最小公倍数公式为

LCM(a ,b) = (a * b) / gcd(a,b)

即 最小公倍数 = 两数之积 / 两数的最大公约数

综合 辗转相除法+递归 求n个数的最大公约数和最小公倍数

package CSDN._04资料四;

import java.util.Scanner;

public class GETGCDByHHH {
// 最大公约数
    static int getGCD(int a, int b) {
        if (b == 0)
            return a;
        return getGCD(b, a % b);

    }

// 最小公倍数

    static int getLCM(int a, int b) {
        return a * b / getGCD(a, b);
    }

    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("要输入几个数字 : ");
        int n = sc.nextInt();

        int[] data = new int[n];

        for (int i = 0; i < n; i++) {
            System.out.println("请输入第"+(i+1)+"数");
            data[i] = sc.nextInt();
        }

        int gcd = data[0];
        for(int i = 1; i < n; ++i){
            gcd = getGCD(data[0], data[i]);
        }

        int lcm = 1;
        for (int i = 1; i < n; i++) {
            lcm = getLCM(data[0],data[i]);
        }

        System.out.println("最大公约数是:" + gcd);
        System.out.println("最小公倍数是:" + lcm);

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/102212.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一百六十九、Hadoop——Hadoop退出NameNode安全模式与查看磁盘空间详情(踩坑,附截图)

一、目的 在海豚跑定时跑kettle的从Kafka到HDFS的任务时&#xff0c;由于Linux服务器的某个文件磁盘空间满了&#xff0c;导致Hadoop的NodeName进入安全模式&#xff0c;此时光执行hdfs dfsadmin -safemode leave命令语句没有效果&#xff08;虽然显示Safe mode is OFF&#x…

EFLK日志平台(filebeat-->kafka-->logstash-->es-->kiabana)

ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。 安装顺序 1.安装es 7.17.12 2.安装kibana 7.17.12 3.安装x-pack 保证以上调试成功后开始下面…

C语言:动态内存(一篇拿捏动态内存!)

目录 学习目标&#xff1a; 为什么存在动态内存分配 动态内存函数&#xff1a; 1. malloc 和 free 2. calloc 3. realloc 常见的动态内存错误&#xff1a; 1. 对NULL指针的解引用操作 2. 对动态开辟空间的越界访问 3. 对非动态开辟内存使用free释放 4. 使用free释…

汽车自适应巡航系统控制策略研究

目 录 第一章 绪论 .............................................................................................................................. 1 1.1 研究背景及意义 ..........................................................................................…

Spring Boot 中 Nacos 配置中心使用实战

官方参考文档 https://nacos.io/zh-cn/docs/quick-start-spring-boot.html 本人实践 1、新建一个spring boot项目 我的spirngboot版本为2.5.6 2、添加一下依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-…

【Locomotor运动模块】瞬移

文章目录 一、原理二、两种类型1、Instant(立刻)2、Dash&#xff08;猛冲&#xff09; 三、瞬移区域、瞬移点1、瞬移区域2、瞬移点 一、原理 抛物线指针选择好目标位置&#xff0c;然后告诉瞬移预设体&#xff1a;你想法把游戏区域弄到目标位置来 解释&#xff1a;抛物线指针选…

uniapp 微信小程序仿抖音评论区功能,支持展开收起

最近需要写一个评论区功能&#xff0c;所以打算仿照抖音做一个评论功能&#xff0c;支持展开和收起&#xff0c; 首先我们需要对功能做一个拆解&#xff0c;评论区功能&#xff0c;两个模块&#xff0c;一个是发表评论模块&#xff0c;一个是评论展示区。接下来对这两个模块进行…

最新ChatGPT程序源码+AI系统+详细图文部署教程/支持GPT4.0/支持Midjourney绘画/Prompt知识库

一、AI系统 如何搭建部署人工智能源码、AI创作系统、ChatGPT系统呢&#xff1f;小编这里写一个详细图文教程吧&#xff01;SparkAi使用Nestjs和Vue3框架技术&#xff0c;持续集成AI能力到AIGC系统&#xff01; 1.1 程序核心功能 程序已支持ChatGPT3.5/GPT-4提问、AI绘画、Mi…

Kubernetes技术--使用kubeadm搭建高可用的K8s集群(贴近实际环境)

1.高可用k8s集群架构(多master) 2.安装硬件要求 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 注: 这里属于教学环境,所以使用三台虚拟机模拟实现。 3.部署规划 4.部署前准备 (1).关闭防火墙 systemctl stop fi…

数据结构|栈和队列以及实现

栈和队列 一、栈1.1栈的概念及结构1.2栈的实现 二、队列2.1队列的概念及结构2.2队列的实现 一、栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和数据删除的一端称为栈顶&#xff0c;另一端称为栈…

深度学习入门(Python)学习笔记1

第1章 Python入门 1.1python是什么 Python是一个简单、易读、易记的编程语言&#xff0c;而且是开源的&#xff0c;可以免费地自由使用。 使用Python不仅可以写出可读性高的代码&#xff0c;还可以写出性能高&#xff08;处理速度快&#xff09;的代码。 再者&#xff0c;在…

7.2 项目2 学生通讯录管理:文本文件增删改查(C 版本)(自顶向下设计+断点调试) (A)

C自学精简教程 目录(必读) 该作业是 作业 学生通讯录管理&#xff1a;文本文件增删改查&#xff08;C版本&#xff09; 的C 语言版本。 具体的作业题目描述&#xff0c;要求&#xff0c;可以参考 学生通讯录管理&#xff1a;文本文件增删改查&#xff08;C版本&#xff09;。…

Windows下Redis的安装和配置

文章目录 一,Redis介绍二,Redis下载三,Redis安装-解压四,Redis配置五,Redis启动和关闭(通过terminal操作)六,Redis连接七,Redis使用 一,Redis介绍 远程字典服务,一个开源的,键值对形式的在线服务框架,值支持多数据结构,本文介绍windows下Redis的安装,配置相关,官网默认下载的是…

iTOP-RK3588开发板Android12 设置系统默认不休眠

修改文件&#xff1a; device/rockchip/rk3588/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults. xml 文件&#xff0c;如下图所示&#xff1a; - <integer name"def_screen_off_timeout">60000</integer> <integer name&q…

卡特兰数和算法

在组合数学中&#xff0c;卡特兰数是一系列自然数&#xff0c;出现在各种组合计数问题中&#xff0c;通常涉及递归定义的对象。它们以比利时数学家尤金查尔斯卡特兰&#xff08;Eugne Charles Catalan&#xff09;的名字命名。 卡特兰数序列是1, 1, 2, 5, 14, 42......&#xf…

传承精神 缅怀伟人——湖南多链优品科技有限公司赴韶山开展红色主题活动

8月27日上午&#xff0c; 湖南多链优品科技有限公司全体员工怀着崇敬之情&#xff0c;以红色文化为引领&#xff0c;参加了毛泽东同志诞辰130周年的纪念活动。以董事长程小明为核心的公司班子成员以及全国优秀代表近70人一行专赴韶山&#xff0c;缅怀伟人毛泽东同志的丰功伟绩。…

230902-部署Gradio到已有FastAPI及服务器中

1. 官方例子 run.py from fastapi import FastAPI import gradio as grCUSTOM_PATH "/gradio"app FastAPI()app.get("/") def read_main():return {"message": "This is your main app"}io gr.Interface(lambda x: "Hello, …

基于硬件隔离增强risc-v调试安全1_问题描述

安全之安全(security)博客目录导读 2023 RISC-V中国峰会 安全相关议题汇总 说明&#xff1a;本文参考RISC-V 2023中国峰会如下议题&#xff0c;版权归原作者所有。

CCF HPC China2023|澎峰科技:使能先进计算,赋能行业应用

CCF HPC China2023圆满落幕&#xff01; 桂秋八月&#xff0c;为期三天的中国高性能计算领域最高规格盛会——2023CCF全球高性能计算学术年会&#xff08;HPC China&#xff09;在青岛红岛国际展览中心圆满落幕。行业超算大咖、顶级学界精英、先锋企业领袖参会者齐聚山东青岛&a…

tableau基础学习2:时间序列数据预处理与绘图

文章目录 数据预处理1. 原始数据2. 合并数据集2. 创建计算字段 绘图分析1. 趋势分析2. 计算字段趋势分析 这一部分&#xff0c;我们记录一些分析时序趋势的分析步骤 数据预处理 1. 原始数据 原始数据是excel表格&#xff0c;其中包含三个Sheet页&#xff0c; 这里我们选择两…