您的位置:首页 > 其它

欧拉函数-数论

2018-03-12 17:52 162 查看
欧拉函数φ(N)表示小于或等于N的正整数中与N互质的数的个数。

欧拉函数具有如下的几个性质



代码:

int phi(int n)//<=n(n!=1时是<n)的且与n互质的数的个数
{
int ans;
if(n == 1)//特判n=1的情况
ans = 1;
else//其他情况,根据公式 φ(n) = n(1-1/p1)(1-1/p2)..(1-1/pk) (pi为质因子)来计算
{
ans = n;
for(int i = 2; n != 1; i++)//当n的质因数分解完成时退出循环
if(n % i == 0)
{
ans = ans / i;//不能直接写为*(1-1/i)
ans = ans * (i - 1);//不能直接写为*(1-1/i)
while(n % i == 0)//把质因数i从n中剔除
n = n / i;
i = 1;//将i置为1,之后执行i++,i成了2
}
}
return ans;
}
也有用素数筛预处理的写法


应用——求解原根的个数:

什么是原根呢?

假如
a^i mod b
的结果两两不同,且有
1<a<b,1<i<b
,那么a就是b的一个原根。

原根的个数等于φ(φ(N))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: