for(int i = 2; i <= n; i++) { // 暴力
int num = i;
for(int j = 2; j * j <= num; j++) {
if(num % j) continue; // 只要是素数就不进行下一步
while(num % j == 0) { // 分解合数的质数因子
cnt[j]++; // cnt[]存的是素数的个数 , j 为素数
num /= j;
}
cnt[num]++; // 24 % 2, 12 %2 , 6 % 2, 3 也的存上
}
cnt[i]++; // 例如 2 3 4 5,除了4是合数外,将其素数存起来
}
分解合数的质因子
最新推荐文章于 2023-03-27 20:05:20 发布