质因数的个数

质因数的个数

http://www.nowcoder.com/questionTerminal/20426b85f7fc4ba8b0844cc04807fbd9

  1. 当枚举到i时意味着所有2 -(i-1)的质因子都除干净了
  2. 同时 n 不包括任何2 - (i-1)的质因子了
  3. 所以i一定是质数

int div(int x){     
    int s = 0;
    for(int i = 2; i <= n; i++){
        if(n % i == 0){
            while(n % i == 0){
                n /= i;
                s++;
            }
        }
    }
    return s;
}

  1. 因为n中最多只包含一个大于sqrt(n)的质因子,(若多于一个则相乘大于n了)
  2. 以枚举的时候先把小于等于sqrt(n)的质因子枚举出来, 只需要枚举到n / i,
  3. 后如果n > 1说明剩下来的就是唯一那个大于n的质因子,(1已经说明了最多只有只有一个大于sqrt(n)的质因子)
int div(int n){
    int s = 0;
    for(int i = 2; i <= n / i; i++){
        if(n % i == 0){
            while(n % i == 0){
                n /= i;
                s++;
            }
        }
    }
    if(n > 1) s++;
    return s;
}
全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
评论
2
收藏
分享
牛客网
牛客企业服务