题目描述:
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
函数接口说明: public String getResult(long ulDataInput)
输入参数: long ulDataInput:输入的正整数
返回值: String
知识点: 排序
输入: 一个long型整数
输出: 按照从小到大的顺序输出它的所有质数的因子,以空格隔开
样例输入: 180
样例输出: 2 2 3 3 5
代码:
#include <iostream>
#include <map>
using namespace std;
int isPrime(int num)
{
if (num <= 2)
return 1;
for (int i = 2; i <= sqrt(num); i++)
{
if (num%i == 0)
return 0;
}
return 1;
}
int main()
{
long num,i;
cin >> num;
map<int, int> m;
for (i = 2; i <= sqrt(num); i++)
{
if (isPrime(i))
m[i] = 0;
}
map <int, int>::iterator it, final,end;
it = m.begin();
// cout << it->first << ' ' << it->second << endl;
while (num>1)
{
while ((num % (it->first) == 0) && num > 1)
{
it->second++;
num /= (it->first);
}
// cout << it->first << ' ' << it->second << endl;
it++;
}
final = it;
end = --it;
for (it = m.begin(); it != final; it++)
{
while (it->second > 0)
{
cout << it->first;
if (it == end&&it->second == 1)
{
cout << endl;
system("pause");
return 0;
}
else
cout << ' ';
it->second--;
}
}
// system("pause");
return 0;
}
得分 | 运行时间 | 内存 | 复杂度 | 最大嵌套深度 |
100(100) | 16ms | 2340KB | 11 | 4 |