题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
最后一个数后面也要有空格
解题思路:
求质因子连乘积,从2开始,将被除数的的因子除尽,那么得到的就是质因子。
错误点:
if(n>1) cout<<n<<’ ';这一行没有写,因为随着n的减小,外层循环逐渐满足不了,最后一个因子需要这种方式打出来(虽然我也没搞懂为啥)
如果把循环终止条件改为//for(int i=2;i<=n;i++){,会超时
#include<cmath>
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=2;i<=sqrt(n);i++){
//for(int i=2;i<=n;i++){
while(n%i==0){
n = n/i;
cout<<i<<' ';
}
}
if(n>1) cout<<n<<' ';
}
114

被折叠的 条评论
为什么被折叠?



