题解 | #质数因子# 他人思路+注释

质数因子

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

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    long n;
    cin >> n;
    for(int i=2; i<=sqrt(n); i++){
        // 此处的while而不是if保证了遇见一个质数因子就排除所有,防止后面出现合数
        // 注意这里i的取值是从小到大的,而且上限为n的开放,这种从下到大的顺序再配合while  就可以找到所有的质数!!
        while(n % i == 0){
            cout << i << ' ';
            n /= i;
        }
    }
    // 如果n本身就是一个质数,又因为题目中不把1视为质数,所以有如下代码判断n本身是否为质数
    // n如果是质数,上面的过程不影响n的取值,否则n一定为1
    if(n > 1){
        cout << n << ' ';
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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