描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
数据范围: 1 \le n \le 2 \times 10^{9} + 14 \1≤n≤2×109+14
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
该题难点主要在于提升计算效率。
(1)输出所有质数的因子,那么这个因子最大也就是这个数值开根号
(2)有除数能除的最后数值肯定是1,如果不是1那就是这个数本身就是质因子
#include <iostream>
#include <cmath>
using namespace std;
int main() {
long a;
while (cin >> a )
{
long memory = a;
for (int i = 2; i*i<= memory; i++)
{
while(a % i == 0)
{
cout << i << " ";
a = a/i;
}
}
if(a>1)
{
cout<<a;
}
}
return 0;
}