angelia-wang

5.5 质因数分解

http://codeup.hustoj.com/contest.php?cid=100000592

E 完数与盈数

image-20200718163149588

题目解析

⚠️完美数的定义是其不等于本身的因子之和等于其本身,也就是说 完美数所有因子和等于本身的2倍

大体解题思路:

  1. 要得到一个数n的各因子之和,要先得到n的所有质因数。则将问题转换为求解n的所有质因数
image-20200718163549613
  1. 要求解n的质因数,首先要对素数打表,此处为尽可能节约时间,采用埃式筛法【O(nloglogn)】

PS:若只需求一个数的所有因子个数,则不用写出结构体factor,只需统计所有cnt的个数即可(可以简化代码)

对代码的解释

  1. 定义prime记录所有的素数,pNum为素数个数;bool型数组p中 p[i]表示i是否为素数,false为是,true为否。

    【此为埃式筛法的内容】

  2. factor表示一个质因子,x为质因子具体数值,cnt为此质因子的个数,求解质因子步骤大致为:

    • 枚举1~sqrt(n)范围内的所有素数p,判断p是否为n的因子
      • 若是,则给fac数组中添加质因子p,并初始化个数为0;然后若p还是n的因子,则让n不断除以p并cnt++,直到p不再是n的因子

分类:

技术点:

相关文章:

猜你喜欢
  • 2021-05-27
  • 2021-07-05
  • 2021-05-08
  • 2021-09-17
相关资源
相似解决方案