C++[编程题]分解因数

本文探讨了如何使用C++实现一个因数分解的算法,主要思路是从2到a的平方根,检查每个数是否能整除a。找到因子后,更新a的值并继续查找,直到a变为质数。所有找到的因子存储在vector中,最后输出时需要注意格式以通过测试用例。
摘要由CSDN通过智能技术生成

【思路】:

这道题给出一个数a,需要分解因式。一个数的因式分解范围是从[2,sqrt(a)],从2开始到a的平方根范围,这些都是a的因子。

首先我们需要判断a这个整数从2开始,是否可以整除范围中的数,如果整出了,说明范围中的数就是其中一个因子。因为整除因子从除1最小数开始遍历因字数,所以需要将a这个数缩小范围,当a为12的时候,12最开始整除2,如果a这个数能够整除2,那么将a的值缩小a/=2,变成6,使得6再从2开始整除,整出到最后剩下一个质数3,那么会跳出for循环的条件,存在质数的情况,我们单独将它处理。这些因子我们可以存放在vector中保存。如果这个数大于1,那么说明它是质数,将它push_back到vector中。

最后要注意的是,牛客给出的测试用例,最后输出需要注意格式,有空格,这样才能通过测试。

// write your code here 
#include <iostream>
#include <vector>
using namespace std;
//分解因子
void factorSub(int a,vector<int>& factor)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值