c++ 求解质因数(细节详解)

news2024/12/26 11:46:43

定义

这里先来了解几个定义(如已了解,可直接看下一个板块)

因数:又称为约数,如果整数a除以整数b(b\neq0)的商正好是是整数而没有余数,我们就说b是a的因数

质数:又称为素数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。2是最小的质数

质因数:如果一个数a的因数b同时也是质数,那么b就是a的质因数,例如:8=2*2*2,2就是8的质因数;12=2*2*3,2和3就是12的质因数

了解了质因数的定义后,我们借一道题(自创,为方便大家理解题目,我尽量做到简洁)来了解如何求解质因数(这道题演示的是求解质因数的基础模板,如有其他需求,可以在此模板上延伸)

题目 

题目描述

输入一个整数n,输出此数的所有质因数

输入描述

输入一个整数n

输出描述

输出n的所有质因数

样例输入

12

样例输出

2 2 3

解题思路

上面的样例数字太小,不便于发现规律,所以我们以180来举例,它的质因数为2,2,3,3,5

我们可以发现,质因数由大到小依次寻找,且最小的质数为2,最大的质因数永远不会超过数字本身(如7的质因数就为7,等于本身)

如此一来,便有了如下for循环:

for(int i=2;i<=n;i++){
	while(n%i==0){
		cout<<i<<" ";
		n/=i;
	}
}

很多人看到这个for循环发现根本没有判断质数,便确认这是错的,但我们仔细研究一下其中的while循环,并结合180的质因数来思考:

180的质因数中含有两个2,而我们这里的for循环是用来遍历从2到n所有的数,如果n除以i的商还能除以i,那就一直除下去,直到n除以i的商不能除以i为止,才继续遍历下一个数来除

那为什么没有判断质数还能检测出质因数呢?

因为所有的合数都是由质因数组合而成的,经过前面循环地除以i,那么以i为因数的其他数就没有被遍历的可能(因为这个数已经被分解)

而由于遍历时的被除数为n除以i的商,所以每次n都要除以i,并将n刷新为n除以i的商,这便是n/=i;的含义

到这里,for循环的含义已经讲解完毕,此程序的核心也宣告结束,接下来只需输入加输出

贴代码时间!

总代码

非常的少,准备好了吗?

#include<iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	for(int i=2;i<=n;i++){
		while(n%i==0){
			cout<<i<<" ";
			n/=i;
		}
	}
}

运行结果:

如对本文有疑惑欢迎评论区留言或私信! 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

免费HTTPS代理的风险与网站推荐

在当今的网络环境中&#xff0c;免费HTTPS代理服务因其“零成本”的特点吸引了不少用户。然而&#xff0c;免费往往意味着某些隐性的代价。作为专业的测评团队&#xff0c;我们深入探索了市场上的免费HTTPS代理服务&#xff0c;并在此提醒大家注意其中的风险&#xff0c;同时推…

【企业级开发模型】Git分支设计模型 | 企业级项目挂历实战_准备工作开发场景实操

目录 3.Git分支设计模型 3.1master分支 3.2release分支 3.3develop分支 3.4feature分支 3.5hotfix分支 4.企业级项目挂历实战_准备工作&开发场景实操学习文档 3.Git分支设计模型 对于我们开发人员来说&#xff0c;对于不同的场景/环境&#xff0c;来设计分支模型。…

Redis与MySQL数据一致性问题的策略模式及解决方案

目录 一、策略模式 1、旁路缓存模式&#xff08;Cache Aside Pattern&#xff09; 2、读写穿透&#xff08;Read-Through/Write-Through&#xff09; 3、异步缓存写入&#xff08;Write Behind&#xff09; 二、一致性解决方案 1、缓存延迟双删 2、删除重试机制 3、读取…

30.【C语言】函数系列下

1.嵌套调用 *定义&#xff1a;函数之间的互相调用 *例&#xff1a; int function1(int a, int b) {function2(b);//嵌套函数的调用return a; } //注意&#xff1a;不能将function2定义在function1的里面&#xff0c;这不叫嵌套函数的调用 void function2(int c) {} #include…

聊一聊 Node.js(Express)的 req.body、req.params 和 req.query 区别和应用场景

在Node.js的Express框架中&#xff0c;处理客户端发送到服务器的数据时&#xff0c;我们主要使用req.body、req.params和req.query三个属性。这些属性虽然都是请求对象(req)的一部分&#xff0c;但它们的数据来源和用途却各不相同。本文将为大家详细解读它们的区别和使用方法。…

AI绘画SD中 ControlNet 组件 IP-Adapter 实现风格迁移,AI绘画垫图神器!

大家好&#xff0c;我是画画的小强 今天给大家介绍一下AI绘画SD中ControlNet 的 IP-Adapter 组件&#xff0c;该组件可以方便快捷的帮我们对图片的风格进行迁移&#xff0c;简而言之就是可以参考你放置的图片风格来生成其他图片。 它的效果和reference only有点类似&#xff…

LabVIEW 实现用户授权与管理多项测试项目

在使用 LabVIEW 开发测试软件时&#xff0c;用户授权和项目管理是一个重要的功能。为了确保系统安全性、灵活性和可扩展性&#xff0c;可以设计一个用户管理系统&#xff0c;允许管理员增加或减少用户的测试项目权限。以下是一个详细的实现方案&#xff0c;包括用户授权管理、项…

vue字段判断是否可以鼠标悬浮或者点击跳转

通过字段判断是否可以鼠标悬浮展示颜色 是否点击 <span :class"[converBond.stkindustry ! null ? hoverSpan:,]"click"converBond.stkindustry ! null ?goToIndustry(converBond.stkindustryname,converBond.stkindustry):false">{{converBon…

【星地多网融合调度平台】——打造全方位、立体化的应急通信网络

在复杂的应急场景下&#xff0c;信息的快速传递与指挥调度显得尤为重要。星地多网融合调度指挥箱&#xff0c;凭借其强大的多网融合能力&#xff0c;确保了指挥中心与前线救援队伍之间的信息流畅&#xff0c;无论是位置追踪、应急通信&#xff0c;还是全方位视频监控&#xff0…

数仓架构解析(第45天)

系列文章目录 经典数仓架构传统离线大数据架构 文章目录 系列文章目录烂橙子-终生成长社群群主&#xff0c;前言1. 经典数仓架构2. 传统离线大数据架构 烂橙子-终生成长社群群主&#xff0c; 采取邀约模式&#xff0c;不支持付费进入。 前言 经典数仓架构 传统离线大数据架…

细说MCU用单路DAC模块设计和输出锯齿波的实现方法

目录 一、STM32G474RE的DAC模块 二、配置 1.配置DAC 2.选择时钟源和Debug 3.配置系统时钟 三、代码修改 1.启动DAC 2.给DAC的数据输出寄存器赋值 3.运行并观察输出 一、STM32G474RE的DAC模块 有些MCU本身就带有数/模转换器(Digital to Analog Converter,DAC)模块&am…

netty入门-3 EventLoop和EventLoopGroup,简单的服务器实现

文章目录 EventLoop和EventLoopGroup服务器与客户端基本使用增加非NIO工人NioEventLoop 处理普通任务与定时任务 结语 EventLoop和EventLoopGroup 二者大概是什么这里不再赘述&#xff0c;前一篇已简述过。 不理解也没关系。 下面会简单使用&#xff0c;看了就能明白是什么 这…

加速决策过程:企业级爬虫平台的实时数据分析

摘要 在当今数据驱动的商业环境中&#xff0c;企业如何才能在海量信息中迅速做出精准决策&#xff1f;本文将探讨企业级爬虫平台如何通过实时数据分析加速决策过程&#xff0c;实现数据到决策的无缝衔接。我们聚焦于技术如何赋能企业&#xff0c;提升数据处理效率&#xff0c;…

深入分析 Android ContentProvider (三)

文章目录 深入分析 Android ContentProvider (三)ContentProvider 的高级使用和性能优化1. 高级使用场景1.1. 数据分页加载示例&#xff1a;分页加载 1.2. 使用 Loader 实现异步加载示例&#xff1a;使用 CursorLoader 加载数据 1.3. ContentProvider 与权限管理示例&#xff1…

On the Dimensionality of Word Embedding论文解读

基本信息 作者Zi Yindoi10.3115/v1/D14-1162发表时间2018期刊NIPS网址https://arxiv.org/abs/1812.04224 研究背景 1. What’s known 既往研究已证实 词嵌入的一元不变性。 多数的词嵌入算法本质上都是矩阵分解。 2. What’s new 创新点 提出了 Pairwise Inner Product&…

Prometheus配置alertmanager告警

1、拉取镜像并运行 1、配置docker镜像源 [rootlocalhost ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://dfaad.mirror.aliyuncs.com"] } [rootlocalhost ~]# systemctl daemon-reload [rootlocalhost ~]# systemctl restart docker2、…

单片机主控的基本电路

论文 1.复位电路 2.启动模式设置接口 3.VBAT供电接口 4.MCU 基本电路 5.参考电压选择端口 6.SDRAM电路 7.LCD模块电路 8.USB电路 9.按键电路 10.LED电路 11.SD卡电路 12.电量检测电路 13.蓝牙接口通信电路 14.SPI FLASH 电路

Spark实时(四):Strctured Streaming简单应用

文章目录 Strctured Streaming简单应用 一、Output Modes输出模式 二、Streaming Table API 三、​​​​​​​​​​​​​​Triggers 1、​​​​​​​unspecified&#xff08;默认模式&#xff09; 2、​​​​​​​​​​​​​​Fixed interval micro-batches&am…

总结20个Python接单赚钱的平台,兼职月入6000+_让你早日实现财富自由

今天就给大家盘点几个基本入门接私活的资源&#xff0c;让你轻松学python&#xff0c;实现经济独立。 一、Python兼职种类&#xff1a; 接私活刚学会python那会&#xff0c;就有认识的朋友介绍做一个网站的私活&#xff0c;当时接单赚了4K&#xff0c;后又自己接过开发网站后…

vue3+element-plus 实现动态菜单和动态路由的渲染

在 Vue.js 中&#xff0c;使用 Vue Router 管理路由数据&#xff0c;并将其用于渲染 el-menu&#xff08;Element UI 的菜单组件&#xff09;通常涉及以下几个步骤&#xff1a; 定义路由元数据&#xff1a; 在你的路由配置中&#xff0c;为每个路由项添加 meta 字段&#xff0c…