【编程基础C++】素数判定、最小公倍数与最大公因数的实现方法

本文主要是介绍【编程基础C++】素数判定、最小公倍数与最大公因数的实现方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 素数
    • 法一
    • 法二
  • 最大公因数
    • 辗转相除法
    • 另一写法
  • 最小公倍数
    • 直接枚举法
    • 根据GCD算LCM

素数

素数 是指大于1的自然数,且只能被1和自身整除。例如,2、3、5和7都是素数。它们在数学中非常重要,因为任何大于1的自然数都可以唯一地表示为素数的乘积,这被称为素数分解。

法一

#include <iostream>
using namespace std;bool IsPrime(int n)
{if(n <= 1){cout << n << "不是素数" << endl; return false;}for (int i = 2; i < n; i++){if ((n % i) == 0){cout << n << "不是素数" << endl;return false;}}cout << n << "是素数" << endl;return true;
}

法二

#include <iostream>
#include <algorithm>
using namespace std;bool IsPrime(int n)
{if(n <= 1){return false;}for (int i = 2; i <sqrt(n); i++){if ((n % i) == 0){return false;}}return true;
}

最大公因数

最大公因数(GCD) 是指两个或多个整数的最大正整数因子,它们共同的因子中最大的一个。比如,24和36的最大公因数是12,因为12是24和36的所有公因数中最大的。常用的计算方法包括辗转相除法。

辗转相除法

// 辗转相除法求最大公因数
int gcd(int a, int b) {while (b != 0) {int temp = b;b = a % b;a = temp;}return a;
}

另一写法

int gcd(int a, int b) {return b == 0 ? a : gcd(b, a%b);
}

最小公倍数

最小公倍数(LCM) 是指两个或多个整数的最小正整数倍数。换句话说,它是能被这些整数整除的最小数。例如,对于数字4和6,它们的最小公倍数是12,因为12是4和6的所有倍数中最小的一个。

计算最小公倍数的一种常用方法是利用最大公因数(GCD)。公式如下:

在这里插入图片描述

其中,a 和 b 是要计算最小公倍数的两个数,GCD(a, b) 是它们的最大公因数。这个公式利用了最大公因数和最小公倍数之间的关系,使得计算过程更加高效。

直接枚举法

int lcm(int a, int b) {int multiple = std::max(a, b);while (true) {if (multiple % a == 0 && multiple % b == 0)return multiple;multiple++;}
}

根据GCD算LCM

// 计算最小公倍数
int lcm(int a, int b) {return (a * b) / gcd(a, b);
}

这篇关于【编程基础C++】素数判定、最小公倍数与最大公因数的实现方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

SpringBoot读取ZooKeeper(ZK)属性的方法实现

《SpringBoot读取ZooKeeper(ZK)属性的方法实现》本文主要介绍了SpringBoot读取ZooKeeper(ZK)属性的方法实现,强调使用@ConfigurationProperti... 目录1. 在配置文件中定义 ZK 属性application.propertiesapplicati

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas