华为机试 质数因子

题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如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<<' ';
}
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页