您的位置:首页 > 其它

质数因子

2016-03-26 15:28 302 查看
题目描述:

功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如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)16ms2340KB114
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: