每日一题C++版(分解质因数)
编程是很多偏计算机、人工智能领域必须掌握的一项技能,此编程能力在学习和工作中起着重要的作用。因此小白决定开辟一个新的板块“每日一题”,通过每天一道编程题目来强化和锻炼自己的编程能力(最起码不会忘记编程)
特别说明:编程题来自“牛客网”和“领扣”以及热心小伙伴的题目。由于小白有时想锻炼某一类编程方法,所以提供的代码不一定是最优解,但是本文提供的编程代码均为通过测试代码。
分解质因数
题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
最后一个数后面也要有空格
详细描述:
函数接口说明:
public String getResult(long ulDataInput)
输入参数:
long ulDataInput:输入的正整数
返回值:
String
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
示例
输入
180
输出
2 2 3 3 5
解析
这道题因为有对函数接口有说明,因此我们需要根据其要求编写我们的solution类。
分解质因数是一个比较常见的题型,这里面的关键问题就是将每次除以质因子之后的数进行更新。另外按照输出要求,最后一个数后面也要有空格,制定输出字符串即可。
代码
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
class Solution
{
public:
string getResult(long ulDataInput)
{
string str;
vector<long> factor;
long num = ulDataInput;
for (long i = 2; i <= ulDataInput; )
{
if ((num % i )!= 0)
{
i++;
}
else
{
num = num / i;
factor.push_back(i);
}
}
for (auto m:factor)
{
stringstream stream;
stream << m;
string str1;
stream >> str1;
str = str + str1 + " ";
}
return str;
}
private:
};
int main()
{
long ulDataInput;
string str;
cin >> ulDataInput;
Solution solution;
str = solution.getResult(ulDataInput);
cout << str << endl;
return 0;
运行结果