题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
int num;
while (cin >> num) {
for (int i = 2; 1ll * i * i <= num;
i++) //1LL会在运算时把后面的临时数据扩容成long long类型
//n的值在每次循环结束可能会改变
//类似于辗转相除法
//隐含的判断条件是当前的n没有小于sqrt(n)的因子,即n为质数,假如当前i小于等于sqrt(n),那么一定可以继续往下除
//?可不可能除以一个合数i 判断不太可能,因为是由小到大的顺序,合数i的因数已经除了
// if(n%i==0)
while (num % i == 0) {
cout << i << ' ';
num /= i;
}
if (num != 1)
cout << num;
}
}

查看14道真题和解析