题解 | #奇♂妙拆分#

奇♂妙拆分

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 就不用 ++了
  否则就得++表示他还有一个因子在外面
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务