华为机试-质数因子(中等)

质数因子

http://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607

题目描述

功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
最后一个数后面也要有空格

从2开始,循环到根号x即可,余数为0时输出除数,因为有重复的所以要while循环
知道除完结果为1为止
另外还有一种情况就是本身就是质数的,只有1和它本身相乘可以,所以最后判断一下,如果不是除尽退出循环的的,输出本身

#include<iostream>
#include<math.h>
using namespace std;
int main(){
    long num;
    cin>>num;
    for(int i=2;num!=1&&i<=sqrt(num);i++){ //两种退出条件,除尽为1,本身是质数,i超过根号num
        while(num%i==0)//注意这里是循环
        {
            num/=i;
            cout<<i<<' ';
        }       
    }
    if(num!=1) cout<<num<<' ';
}
全部评论

相关推荐

迟缓的斜杠青年巴比Q了:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
评论
1
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务