代码实现1
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main() {
long num;
while(cin >> num){
while(num != 1){
for(int i = 2; i <= num; i++){//考虑num是质数,需要等号;
if(num % i == 0){
num/ = i;
cout << i << ' ';
break;//break,一旦整除成功,退出for循环,再从2开始,所以可以输出2 2 3 3 5
}
}
}
}
return 0;
}
代码实现2
#include<iostream>
#include<cmath>
using std::cin;
using std::cout;
using std::endl;
void getResult(long ulDataInput)
{
if(ulDataInput == 1)
{
cout << 1 << ' ' << endl;
return;
}
int i;
//首先,判断ulDataInput是否可以被2整除,
//如果可以,那么ulDataInput/2之后再判断,直至ulDataInput变为奇数
while(ulDataInput % 2 == 0)
{
ulDataInput = ulDataInput / 2;
cout << 2 << ' ';
}
//接下来,开始一个从i=3到i= sqrt(ulDataInput)的循环,
//当i可以整除ulDataInput的时候,进行整除运算,直至不能整除为止,然后i每次递增2
for(i = 3; i <= sqrt(ulDataInput); i += 2)
{
while(ulDataInput % i == 0)
{
ulDataInput = ulDataInput / i;
cout << i << ' ';
}
}
//对第二步结束的ulDataInput进行判断是1还是比2的质数
if(ulDataInput > 2)
cout << ulDataInput << ' ';
cout << endl;
}
int main()
{
long test_value = 0;
while(cin >> test_value)
{
getResult(test_value);
}
return 0;
}
编程笔记
- 代码实现解题思路:代码实现解题思路详解
- 编写代码需要考虑时间复杂度与空间复杂度。
时间复杂度与空间复杂度相关概念参考链接