美文网首页
HJ6 质数因子(不超时版)

HJ6 质数因子(不超时版)

作者: help_youself | 来源:发表于2022-07-13 15:31 被阅读0次
    #include<iostream>
    #include <math.h>
    using namespace std;
    static bool inline IsPrime(int num){
        bool ret=false;
        if(num<=1){
            return ret;
        }
        if(num<=3){
            ret=true;
            return ret;
        }
        if(num%2==0){
            return false;
        }
        int limit=sqrt(num);
        ret=true;
        for(int i=2;i<=limit;i++){
            if(0==num%i){
                ret=false;
                break;
            }
        }
        return ret;
    }
    int main(){
        int num;//2000000014
        std::cin>>num;
        for(int i=2;i<=num;i++){
            while(num%i==0){
                num=num/i;
                if(num==1){
                    std::cout<<i<<std::endl;
                }else{
                    std::cout<<i<<" ";
                }
            }
            if(IsPrime(num)){
                std::cout<<num<<std::endl;
                break;
            }
            if(num==1){
                break;
            }
        }
        return 0;
    }
    

     主函数中增加一个判断除数是否为质数的判断,从而可以提前退出for循环。比如测试实例2000000014=2x1000000007。1000000007为质数,提前退出for循环,不再从3到1000000007的范围内寻找了。

            if(IsPrime(num)){
                std::cout<<num<<std::endl;
                break;
            }
    

    相关文章

      网友评论

          本文标题:HJ6 质数因子(不超时版)

          本文链接:https://www.haomeiwen.com/subject/uictirtx.html