题目大意给出一个数n(n<=106),问这个数有多少个质因数。     
小小分析一下106还是一个比较大的数滴。首先想到的方法是把素数存起来使用,可以不必使用试除。继续思考,如果把106内的素数计算出来还是有很大工作量的。其实,对于一个数n,在sqrt(n)到n之间最多只有一个质因数,如果有两个的话...上帝就要崩溃了...那么我们也就只需要计算1000之内的素数了。除掉n中的所有小于sqrt(n)的质因数,有几个除几个,如果剩下1,那么就不存在sqrt(n)到n之间的质因数,反之则存在。那么我们计数的工作量就大大减少了。以下是关键部分的代码,prime是一个vector<int>,里头保存了1000以内的素数。


18 

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-16
  • 2021-08-15
  • 2021-11-23
  • 2021-07-13
  • 2021-09-25
  • 2022-02-22
猜你喜欢
  • 2021-12-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-07
  • 2022-12-23
相关资源
相似解决方案