题解 | #质数因子#

质数因子

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

#include <stdio.h>

int main() {
    int a;
    scanf("%d",&a);
    //先找到所有的2
    while(a%2==0)
    {
        printf("%d ",2);
        a=a>>1;
    }
    //找所有奇数,后面质数只可能是奇数
    //i*i>a作为结束循环的标志,因为如果i*i>a,则a/i<i
    //此时如果i是质因子,那么a/i不会再找到比i大的质因子,比i小的质因子已经找完了
    //此时如果i不是质因子,那么a/i不会再找到比i大的质因子,循环应当结束
    for(int i=3;i*i<=a;i=i+2)
    {
        while(a%i==0)
        {
            printf("%d ",i);
            a=a/i;
        }
    }
    //如果循环前一个i为i*i==a,则还要加上一个质因子i
    if(a>2){
        printf("%d", a);
    }
    return 0;
}

全部评论

相关推荐

02-16 00:16
已编辑
湖北大学 Java
Java抽象带篮子:java简历怎么写可以看看我发的帖子,很详细的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务