C++求一个整数的所有素因子的个数,不会超时

一个正整数可以分解成一个或多个数的积。例如36=223*3,即包含2和3两个因子。NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数,他希望你开发一个程序输出每个正整数的因子个数。

#include<iostream>
using namespace std;

int main() {
 int n = 0;
 while (cin >> n) {
  int sum = 0;
  int k = (int)sqrt(n);
  for (int i = 2; i <= k; i++) {
   if (n % i == 0) {
    while (n % i == 0) {
     n /= i;
    }
    sum++;
   }
  }
  //循环出来后如果n不是1,那就是一个素因子,所以最后的sum要加一
  if (n == 1) {
   cout << sum << endl;
  }
  else {
   cout << ++sum << endl;
  }
 }
 return 0;
}

版权声明:本文为loreal8原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。