当前位置: 首页 > news >正文

c++实现最大公因数和最小公倍数

 最大公因数和最小公倍数的介绍

读这篇文章,请你先对最大公因数以及最小公倍数进行了解:

最大公因数(英文名:gcd)

  • 定义:最大公因数,也称最大公约数,指两个或多个整数共有约数(因数)中最大的一个。
  • 求法
    • 列举法:分别列出两个数的所有约数,然后找出它们共有的约数中最大的那个。
    • 分解质因数法
    • 辗转相除法:用较大数除以较小数得到商和余数,再用除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公因数。
  • 最小公倍数(英文名:lcm)

    • 几个数共有的倍数叫做这几个数的公倍数,其中除 0 以外最小的一个公倍数,叫做这几个数的最小公倍数。例如,4 的倍数有 4、8、12、16、20、24……,6 的倍数有 6、12、18、24、30……,4 和 6 的公倍数有 12、24……,其中最小的是 12,所以 4 和 6 的最小公倍数是 12,可记作[4,6]:12。
    • 求法
      • 列举法:分别列出两个数的倍数,然后找出它们共有的倍数中最小的那个。如求 3 和 5 的最小公倍数,3 的倍数有 3、6、9、12、15、18……,5 的倍数有 5、10、15、20……,它们的最小公倍数是 15。
    • 分解质因数法:把它们公有的质因数与每个数独有的质因数连乘起来,所得的积就是它们的最小公倍数。例如,12=2×2×3,15=3×5,所以
    • 公式法:对于两个数a和b,[a,b]=a*b/(a,b)。例如:

代码:

#include <bits/stdc++.h>
using namespace std;
long long x=0,y=0;
long long pri[100000],cnt=0;
long long gcd(long long a,long long b) {return !b?a:gcd(b,a%b);
}
void gprime(long long num) {cout<<num<<"=";long long divisor=2;bool first=true;while(num>1) {if(num%divisor==0) {if(!first) {cout<<"*";}cout<<divisor;num/=divisor;first=false;} else {divisor++;}}cout<<endl;
}
vector<long long>commonFactors(long long a,long long b) {vector<long long>factors;for(long long i=1; i<=min(a,b); i++) {if(a%i==0&&b%i==0) {factors.push_back(i);}}return factors;
}
long long poww(long long x) {long long f1=x,cnt=0;while(f1) {f1/=10;cnt++;}return cnt;
}
bool Is_Prime(long long x) {for(long long i=2; i<x; i++) {if(x%i==0) {return 0;}}return 1;
}
void Print(long long a,long long b) {cout<<"分解质因数过程:"<<endl;gprime(a);gprime(b);vector<long long>factors=commonFactors(a,b);cout<<a<<"和"<<b<<"的公因数有:";for(long long factor:factors) {cout<<factor<<" ";}cout<<"\n";if(gcd(a,b)==1) {cout<<"互质,没有过程。\n";} else {cout<<"输出短除法过程\n";long long k=poww(a)+poww(b)+5,back;long long fa=a,fb=b;while(gcd(fa,fb)!=1) {for(long long i=2;; i++) {if(Is_Prime(i)&&fa%i==0&&fb%i==0) {cnt++;pri[cnt]=i;cout<<i<<" | "<<fa<<" "<<fb<<"\n";for(long long j=1; j<=poww(i)+1; j++) {cout<<" ";}for(long long j=1; j<=k; j++) {cout<<"-";}fa/=i;fb/=i;cout<<"\n";if(gcd(fa,fb)==1) {back=i;x=fa;y=fb;}break;}}}for(long long i=1; i<=poww(back)+3; i++) {cout<<" ";}cout<<fa<<" "<<fb<<"\n";}if(gcd(a,b)==1) {cout<<"("<<a<<","<<b<<"):"<<gcd(a,b)<<"\n";cout<<"["<<a<<","<<b<<"]:";if(gcd(a,b)==1) {cout<<a<<"*"<<b<<"\n";for(long long i=1; i<=poww(a)+poww(b)+3; i++) {cout<<" ";}cout<<"=";}cout<<a*b/gcd(a,b);return ;}cout<<"("<<a<<","<<b<<"):";long long anss=1;for(long long i=1; i<=cnt; i++) {anss*=pri[i];cout<<pri[i];if(i!=cnt) {cout<<"*";}}cout<<"\n";for(long long i=1; i<=poww(a)+poww(b)+3; i++) {cout<<" ";}cout<<"="<<anss;cout<<"\n["<<a<<","<<b<<"]:";for(long long i=1; i<=cnt; i++) {cout<<pri[i]<<"*";}cout<<x<<"*"<<y<<"\n";for(long long i=1; i<=poww(a)+poww(b)+3; i++) {cout<<" ";}cout<<"="<<anss<<"*"<<x*y<<"\n";for(long long i=1; i<=poww(a)+poww(b)+3; i++) {cout<<" ";}cout<<"="<<gcd(a,b)<<"\n";cout<<"("<<a<<","<<b<<"):"<<gcd(a,b)<<"\n";cout<<"["<<a<<","<<b<<"]:";if(gcd(a,b)==1) {cout<<a<<"*"<<b<<"\n";for(long long i=1; i<=poww(a)+poww(b)+3; i++) {cout<<" ";}cout<<"=";}cout<<a*b/gcd(a,b);
}
int main() {cout<<"输入两个整数:\n";cout<<"本程序用于计算两个数的gcd(最大公因数、最大公约数)以及lcm,其中,(a,b)表示两个数的gcd,[a,b]表示两个数的lcm\n";long long a,b;cin>>a>>b;system("cls");if(gcd(a,b)==1) {cout<<"检测到互质,将自动省略过程\n";Print(a,b);return 0;}if(gcd(a,b)==min(a,b)){cout<<"检测到有倍数关系,这里推荐使用不要过程,请慎重选择\n";}cout<<"输入模式:\n";cout<<"0.只要答案\n";cout<<"其他任何数.要过程\n";long long sr;if(!sr&&gcd(a,b)==min(a,b)){cout<<"("<<a<<","<<b<<"):"<<min(a,b)<<"\n";cout<<"["<<a<<","<<b<<"]:"<<max(a,b)<<"\n";return 0;}cin>>sr;system("cls");if(!sr) {cout<<"("<<a<<","<<b<<"):"<<gcd(a,b)<<"\n";cout<<"["<<a<<","<<b<<"]:";if(gcd(a,b)==1) {cout<<a<<"*"<<b<<"\n";for(long long i=1; i<=poww(a)+poww(b)+3; i++) {cout<<" ";}cout<<"=";}cout<<a*b/gcd(a,b);return 0;}Print(a,b);return 0;
}

相关文章:

c++实现最大公因数和最小公倍数

最大公因数和最小公倍数的介绍 读这篇文章&#xff0c;请你先对最大公因数以及最小公倍数进行了解&#xff1a; 最大公因数&#xff08;英文名&#xff1a;gcd&#xff09; 定义&#xff1a;最大公因数&#xff0c;也称最大公约数&#xff0c;指两个或多个整数共有约数&…...

知识库Dify和cherry无法解析影印pdf word解决方案

近期收到大量读者反馈&#xff1a;上传pdf/图文PDF到Dify、Cherry Studio等知识库时&#xff0c;普遍存在格式错乱、图片丢失、表格失效三大痛点。 在试用的几款知识库中除了ragflow具备图片解析的能力外&#xff0c;其他的都只能解析文本。 如果想要解析扫描件&#xff0c…...

【记录一下学习】Embedding 与向量数据库

一、向量数据库 向量数据库&#xff08;Vector Database&#xff09;&#xff0c;也叫矢量数据库&#xff0c;主要用来存储和处理向量数据。 在数学中&#xff0c;向量是有大小和方向的量&#xff0c;可以使用带箭头的线段表示&#xff0c;箭头指向即为向量的方向&#xff0c…...

【第21节】C++设计模式(行为模式)-Chain of Responsibility(责任链)模式

一、问题背景 在 VC/MFC 开发中&#xff0c;消息处理机制是核心部分之一。VC 是基于消息和事件驱动的框架&#xff0c;消息的处理流程通常是通过链式传递的方式进行的。例如&#xff0c;一个 WM_COMMAND 消息的处理流程可能如下&#xff1a; &#xff08;1&#xff09;MDI 主窗…...

createrepo centos通过nginx搭建本地源

yum update 先安装一个nginx。 安装Nginx yum install gcc gcc-c pcre pcre-devel openssl openssl-devel libtool zlib zlib-devel -y cd /usr/local/src wget http://nginx.org/download/nginx-1.22.0.tar.gz tar -zxvf nginx-1.22.0.tar.gz cd nginx-1.22.0 ./configu…...

在 Docker 中搭建GBase 8s主备集群环境

本文介绍了如何在同一台机器上使用 Docker 容器搭建GBase 8s主备集群环境。 拉取镜像 拉取GBase 8s的最新镜像 docker pull liaosnet/gbase8s或者docker pull liaosnet/gbase8s:v8.8_3513x25_csdk_x64注&#xff1a;在tag为v8.8_3513x25_csdk_x64及之后的版本中&#xff0c;…...

【MySQL-数据类型】数据类型分类+数值类型+文本、二进制类型+String类型

一、数据类型分类 二、数值类型 1.bit类型 测试环境ubuntu 基本语法&#xff1a; bit[(M)]&#xff1a;位字段类型&#xff0c;M表示每个值的位数&#xff0c;范围从1&#xff5e;64&#xff1b;如果M被忽略&#xff0c;默认为1举例&#xff1a; create table testBit(id i…...

小谈java内存马

基础知识 &#xff08;代码功底不好&#xff0c;就找ai优化了一下&#xff09; Java内存马是一种利用Java虚拟机&#xff08;JVM&#xff09;动态特性&#xff08;如类加载机制、反射技术等&#xff09;在内存中注入恶意代码的攻击手段。它不需要在磁盘上写入文件&#xff0c…...

简单的二元语言模型bigram实现

内容总结归纳自视频&#xff1a;【珍藏】从头开始用代码构建GPT - 大神Andrej Karpathy 的“神经网络从Zero到Hero 系列”之七_哔哩哔哩_bilibili 项目&#xff1a;https://github.com/karpathy/ng-video-lecture Bigram模型是基于当前Token预测下一个Token的模型。例如&#x…...

【清华大学】实用DeepSeek赋能家庭教育 56页PDF文档完整版

清华大学-56页&#xff1a;实用DeepSeek赋能家庭教育.pdf https://pan.baidu.com/s/1BUweVDeG2M8-t0QaIs3LHQ?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/8a9473493bb0 《实用DeepSeek赋能家庭教育》基于清华大学研究成果&#xff0c;系统阐述了DeepSeek人工智能技…...

黑洞如何阻止光子逃逸

虽然涉及广义相对论&#xff0c;但广义相对论说的是大质量物体对周围空间的影响&#xff0c;而不是说周围空间和空间中的光子之间的关系。也就是说&#xff0c;若讨论光子逃逸问题&#xff0c;则不必限定于大质量的前提&#xff0c;也就是说&#xff0c;若质量周围被扭曲的空间…...

1.4 单元测试与热部署

本次实战实现Spring Boot的单元测试与热部署功能。单元测试方面&#xff0c;通过JUnit和Mockito等工具&#xff0c;结合SpringBootTest注解&#xff0c;可以模拟真实环境对应用组件进行独立测试&#xff0c;验证逻辑正确性&#xff0c;提升代码质量。具体演示了HelloWorld01和H…...

window系统中的start命令详解

start 是 Windows 系统中用于启动新进程或打开新窗口来运行指定程序或命令的命令。以下是对 start 命令参数的详细解释&#xff1a; 基本语法 start ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENO…...

AI编程工具节选

1、文心快码 百度基于文心大模型推出的一款智能编码助手&#xff0c; 官网地址&#xff1a;文心快码(Baidu Comate)更懂你的智能代码助手 2、通义灵码 阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c; 官网地址&#xff1a;通义灵码_你的智能编码助手-阿里云 …...

正则表达式,idea,插件anyrule

​​​​package lx;import java.util.regex.Pattern;public class lxx {public static void main(String[] args) {//正则表达式//写一个电话号码的正则表达式String regex "1[3-9]\\d{9}";//第一个数字是1&#xff0c;第二个数字是3-9&#xff0c;后面跟着9个数字…...

原生iOS集成react-native (react-native 0.65+)

由于官方文档比较老&#xff0c;很多配置都不能用&#xff0c;集成的时候遇到很多坑&#xff0c;简单的整理一下 时间节点:2021年9月1日 本文主要提供一些配置信息以及错误信息解决方案&#xff0c;具体步骤可以参照官方文档 原版文档&#xff1a;https://reactnative.dev/docs…...

java错题总结

本篇文章用来记录学习javaSE以来的错题 解答&#xff1a;重载要求俩个方法的名字相同&#xff0c;但参数的类型或者个数不同&#xff0c;但是不要求返回类型相同&#xff0c;所以A正确。 重写还需要要求返回类型相同&#xff08;呈现父子类关系也可以&#xff0c;但是属于特例&…...

【商城实战(10)】解锁商品信息录入与展示的技术密码

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...

2025年主流原型工具测评:墨刀、Axure、Figma、Sketch

2025年主流原型工具测评&#xff1a;墨刀、Axure、Figma、Sketch 要说2025年国内产品经理使用的主流原型设计工具&#xff0c;当然是墨刀、Axure、Figma和Sketch了&#xff0c;但是很多刚入行的产品经理不了解自己适合哪些工具&#xff0c;本文将从核心优势、局限短板、协作能…...

MDM 如何彻底改变医疗设备的远程管理

在现代医疗行业迅速发展的格局中&#xff0c;医院和诊所越来越依赖诸如医疗平板和移动工作站等移动设备。这些设备在提高工作效率和提供卓越的患者护理方面发挥着关键作用。然而&#xff0c;随着它们的广泛使用&#xff0c;也带来了一系列挑战&#xff0c;例如在不同地点确保数…...

AI写论文实用宝典,4款AI论文生成工具搞定各类论文写作!

在2025年的学术写作智能化浪潮中&#xff0c;越来越多的人开始依赖AI写论文工具进行创作。尽管这些工具的使用越来越普遍&#xff0c;但在撰写硕士、博士论文等较长篇幅的学术文章时&#xff0c;许多AI论文写作工具往往陷入缺乏理论深度和逻辑性不强的问题。普通的AI写专著或AI…...

OpenClaw开发辅助:Qwen3.5-9B实现日志分析与错误自动修复

OpenClaw开发辅助&#xff1a;Qwen3.5-9B实现日志分析与错误自动修复 1. 为什么需要AI辅助日志分析&#xff1f; 每次凌晨被报警短信吵醒&#xff0c;盯着密密麻麻的日志文件找异常时&#xff0c;我都会想&#xff1a;如果能有个AI助手帮我自动分析日志、定位问题甚至尝试修复…...

老旧Mac如何重获新生?OCLP-Mod带来的系统升级解决方案

老旧Mac如何重获新生&#xff1f;OCLP-Mod带来的系统升级解决方案 【免费下载链接】OCLP-Mod A mod version for OCLP,with more interesting features. 项目地址: https://gitcode.com/gh_mirrors/oc/OCLP-Mod 随着科技的快速迭代&#xff0c;许多曾经性能卓越的Mac设备…...

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(五)- 动态配置与性能优化实战(vsetvli/vsetivli/vsetvl)

1. 动态向量配置指令的核心作用 RISC-V向量扩展指令集中最精妙的设计之一&#xff0c;就是允许程序运行时动态调整向量处理参数的机制。想象你正在用不同尺寸的螺丝刀组装家具——当遇到大螺丝就换大号刀头&#xff0c;碰到小螺丝立即切换精密刀头&#xff0c;这就是vsetvli/vs…...

WebPlotDigitizer图表数据提取工具:科研工作者的终极数字化解决方案

WebPlotDigitizer图表数据提取工具&#xff1a;科研工作者的终极数字化解决方案 【免费下载链接】WebPlotDigitizer WebPlotDigitizer: 一个基于 Web 的工具&#xff0c;用于从图形图像中提取数值数据&#xff0c;支持 XY、极地、三角图和地图。 项目地址: https://gitcode.c…...

从零开始:用QGIS和PostgreSQL构建交通路线空间数据库(含Python脚本自动化技巧)

从零开始&#xff1a;用QGIS和PostgreSQL构建交通路线空间数据库&#xff08;含Python脚本自动化技巧&#xff09; 在交通规划与智慧城市建设的浪潮中&#xff0c;空间数据的高效管理成为技术团队的核心挑战。传统文件存储方式难以应对大规模交通网络数据的实时查询与分析需求&…...

SOONet效果展示:多查询并行定位——‘倒水’‘接电话’‘写笔记’三任务同步响应

SOONet效果展示&#xff1a;多查询并行定位——‘倒水’‘接电话’‘写笔记’三任务同步响应 1. 引言&#xff1a;当视频搜索变得像说话一样简单 想象一下&#xff0c;你有一段长达一小时的会议录像&#xff0c;现在需要快速找到“张三站起来发言”、“李四在白板上画图”以及…...

AD21实战:3种方法搞定Keepout和机械层互转,最后一种能救急

AD21实战&#xff1a;3种高效解决Keepout与机械层互转难题的方法 在PCB设计过程中&#xff0c;Keepout层和机械层的正确使用与转换是确保设计准确性的关键环节。许多工程师都遇到过这样的困境&#xff1a;当设计文件中包含复杂图形元素时&#xff0c;简单的层切换或属性批量修…...

探索分子世界的三维画笔:PyMOL开源版如何让你成为分子艺术家?

探索分子世界的三维画笔&#xff1a;PyMOL开源版如何让你成为分子艺术家&#xff1f; 【免费下载链接】pymol-open-source Open-source foundation of the user-sponsored PyMOL molecular visualization system. 项目地址: https://gitcode.com/gh_mirrors/py/pymol-open-so…...

开源风扇控制工具FanControl全攻略:从问题诊断到散热方案优化

开源风扇控制工具FanControl全攻略&#xff1a;从问题诊断到散热方案优化 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tren…...