分解公因式 & 练习函数的书写
解法1:不使用函数
#include<math.h>
#include<iostream>
using namespace std;
int main()
{
long int a;
cin>>a;
while(a != 1)
{
for(int i=2; i<= a; i++)
{
if(a%i == 0)
{
a = a/i;
cout<< i << ' ';
break;
}
}
}
return 0;
}
解法2:使用函数
/*
函数接口说明:
public String getResult(long ulDataInput)
输入参数:
long ulDataInput:输入的正整数
返回值:
String
*/
#include <iostream>
#include <sstream>
#include <string>
#include <math.h>
using namespace std;
string getResult(long Data)
{
string result("");
for(int i = 2; i <= sqrt(Data); i++)
{
if(Data % i == 0)
{
ostringstream s;
Data /= i;
s << i;
result += s.str();
result += " ";
i = 1;
}
}
if(Data > 1)
{
ostringstream s;
s << Data;
result += s.str();
result += " ";
}
return result;
}
int main()
{
long Data;
while(cin >> Data)
{
cout << getResult(Data) << endl;
}
}
- ostringstream的用法可以参考下列文章,写得挺清晰的:
c++ ostringstream的用法(c语言的sprintf) - 上面处理循环时候,用“i <= sqrt(Data)”也很巧妙,减少了循环次数
- 对于大一点的数,eg130,还有一些重复的跳转次数,后面再想T^T(赶着刷题)