题解 | #奇♂妙拆分#
奇♂妙拆分
https://ac.nowcoder.com/acm/problem/14709
这题让我深刻认识到我是个菜鸡 筛个因子都不会 这题跟分解质因数很像 这道题有1所以下标从1开始
for(int i = 1; i * i <= n ;i ++) if(n>1) res ++;
唯一不一样如果最后是一个平方数 比如n = 9 , i = 3 , 除完n = 3 还得+1但是要求不能重复 所以有两种解法
for(int i =1 ;i * i < n ;i ++)
这样最后一个因数一定没有计算在内如果是一个大于sqrt(n)的数正好就能是一个
如果最后是一个大于n的数也就是i * i == n 就把i 归结为一个合数就行
2:
for(i , i * i <= n)
{
if(n % i ==0)
{
f = i;
n /= i;
res ++;
}
这里的f就存了每个因数最后如果是因为i * i == n 停下来
那么 f == n 那么res 就不用 ++了
否则就得++表示他还有一个因子在外面
}