题解 | #质数因子#

质数因子

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

#include <math.h>
#include <stdio.h>

int main() {
    int i = 0;
    int num;
    scanf("%d", &num);

    // if ((num < 1) || (num > (2*10E9 + 14))) {
    //     return 1;
    // }

    for (i = 2;; i++) {
        // 1 既不是质数,也不是合数
        if (num == 1) {
            printf("\n");
            break;
        }

        // 每次进入新的循环时,都是要获取 num 的最小质因数
        // 此时的 num 必然不可能被小于 i 的值整除
        // 因此最小质因数必然大于等于 i

        if (i > sqrt(num)) {
            // 对于合数,最小质因数必然小于本身的算数平方根,因此进入此条件必然不可能是合数
            // 对于质数,最小质因数就是它本身
            printf("%d\n", num);
            break;
        }

        while (num % i == 0) {
            printf("%d ", i);
            num = num/i;
        }
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 18:05
哈哈哈哈哈感觉朋友找工作的已经疯掉了,直接上图
码农索隆:真老板娘:“我嘞个去,这不我当年的套路吗
点赞 评论 收藏
分享
码农索隆:有点耳熟,你们是我教过最差的一届
点赞 评论 收藏
分享
07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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