题解 | #质数因子#

质数因子

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

#include <iostream>
#include<cmath>   //好像用不上,只是习惯性写一下
using namespace std;

int main() {
    
    int n;
    cin>>n;      //输入要求的数n
    while(n!=1)   //直到求出最后一个质因数
    {
        for(int i=2,j=n;i<=n;j-=i,i++)     //i从小到大开始验证能否被n整除,j从大到小开始排除;一个数有且只有一个质因数数比他的平方根大,但i每次加一从小验证到n的平方根太慢了,时间来不及,所以用个j加快一下
        {
            if(n%i==0)            //n能整除i,i是n的质因数,输出i,n约一下
            {
                cout<<i<<' ';
                n/=i;
                break;           //从头开始找约后n的质因数
            }
            if(j<=i){             //j一路减到没i大,说明现在他本身就是质数(不确定,只是到他给的数据范围是这样的)
                cout<<n<<' ';     //输出他本身
                n=1;             //完结撒花
            }
        }
    }
    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务