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;
}