分解素数时间复杂度最优解cpp

质数因子

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

话不多说,直接上代码

#include<bits/stdc++.h>
using namespace std;
bool isPrime( long num )
{
                 //两个较小数另外处理
                 if(num ==2|| num==3 )
                                 return true ;
                 //不在6的倍数两侧的一定不是质数
                 if(num %6!= 1&&num %6!= 5)
                                 return false ;
                 int tmp =sqrt( num);
                 //在6的倍数两侧的也可能不是质数
                 for(int i= 5;i <=tmp; i+=6 )
                                 if(num %i== 0||num %(i+ 2)==0 )
                                                 return false;
                 //排除所有,剩余的是质数
                 return true ;
}
int printnums(long a){
    if(isPrime(a)){
        cout<<a<<' ';
        return 0;
     }else {
        long i=2;
        for(;i<=sqrt(a);i++){
            if(a%i==0){
                cout<<i<<' ';
                break;
            }
        }
        long b=a/i;
        printnums(b);
        return 0;
    }
}
int main(){
    long a;
    cin>>a;
    printnums(a);
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-26 15:46
已编辑
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
11-24 19:04
已编辑
湖南工商大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务