描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )最后一个数后面也要有空格。
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。
思路一:
质数不会大于本身的根号,使用这个特质可以减少循环次数
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
void manageData(long n){
//以下的代码有没法通过数值特别大数据的循环时间太久了
// while(n!=1){
// for(long i=2;i<=n;i++){
// if(n%i==0){
// n/=i;
// cout<<i<<' ';
// break;
// }
// }
// }
//质数不会大于它本身的根号
long old_n = 0;
while (n != 1)
{
for (int i = 2; i <=sqrt(n); i++) //不要忽视“=”符号,很重要!
{
old_n = n;
while (n % i == 0) {
cout << i << " ";
n /= i;
}
if (old_n != n)
break;
}
if (old_n == n)
{
cout << n << ' ';
break;
}
}
}
int main()
{
int num=0;
while(cin>>num){
manageData(num);
}
return 0;
}