题解 | #质数因子# 他人思路+注释
质数因子
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 ,并且改变n的取值 就可以找到所有的质因子!! 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")