本文共 1475 字,大约阅读时间需要 4 分钟。
欧拉函数求和问题
问题描述
计算从2到n的欧拉函数和,即计算欧拉函数φ(2) + φ(3) + ... + φ(n)。
方法思路
欧拉函数φ(n)表示小于n且与n互质的正整数的个数。我们需要对每个数i从2到n计算其欧拉函数值,并将这些值累加。
具体步骤如下:
初始化一个数组euler,用于存储每个数的欧拉函数值。 euler[1] = 1,因为1的欧拉函数值为1。 遍历从2到n的每个数i: - 如果i不是质数(即euler[i]已被初始化),则继续。
- 如果i是质数,则对其所有的倍数j进行处理:
- 如果j不是质数(即euler[j]已被初始化),则跳过。
- 否则,euler[j] = j * (1 - 1/p),其中p是j的质因数。
代码实现
#include
代码解释
初始化数组:euler数组用于存储每个数的欧拉函数值,初始时全为0。 设置初始值:euler[1] = 1,因为1与自身互质,且没有其他因数。 遍历每个数:从2到N-1依次处理每个数i。 处理质数:如果i不是质数(即euler[i]已被初始化),则继续。 计算欧拉函数:对于质数i,遍历其所有倍数j,计算euler[j] = j * (1 - 1/p),其中p是j的质因数。 输出结果:读取输入的n,计算从2到n的欧拉函数和并输出结果。 这个方法通过筛法高效地计算欧拉函数和,适用于较大的n值。
转载地址:http://odxfk.baihongyu.com/