题解 | #质数因子#

质数因子

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

#include <iostream>
#include <cmath>

//函数: 检查一个数是否为质数
bool isPrime(int num) {
    if (num <= 1) return false;
    if (num <= 3) return true;
    if (num % 2 == 0 || num % 3 == 0) return false;

    int sqrtNum = static_cast<int>(std::sqrt(num)) + 1;
    for (int i = 5; i < sqrtNum; i += 6) {
        if (num % i == 0 || num % (i + 2) == 0) {
            return false;
        }
    }
    return true;
}

//函数:找到并输出一个数的所有质因子
void printPrimeFactors(int num){
    //处理2作为因子的情况
    while (num % 2 == 0) {
        std::cout << 2 << " ";
        num /= 2;
    }

    //接下来考虑奇数因子
    for (int i = 3; i <= std::sqrt(num); i+=2) {
        //当i是因子时
        while (num % i == 0) {
            std::cout << i << " ";
            num /= i;
        }
    }
    //如果num有大于其平方根的因子,那么它本身就是一个质数
    if (num > 2) {
        std::cout << num << " ";
    }
}

int main() {
    int n;
    std::cin >> n;
    printPrimeFactors(n);
    return 0;
}

全部评论

相关推荐

ldyllic:飞神,985+美团+腾讯+京东,无敌飞飞神
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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