莫欺少年穷,修仙之旅在这开始—>算法基础课题解
欧拉函数
定义: 欧拉函数(Euler’s totient function),即 φ(n) ,表示的是小于等于 n 和 n 互质的数的个数。
结论: 若 n=k∏i=1paii,则 φ(n)=nk∏i=1(1−1pi)
定理: 若 n=pa,其中 p 是质数,那么 φ(n)=pa−pa−1。(由定义可知)
证明: φ(n)=k∏i=1φ(paii)=k∏i=1paii−pai−1i=k∏i=1paii(1−1pi)=nk∏i=1(1−1pi)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
int x;
cin>>x;
int res=x;
for(int i=2;i<=x/i;i++)
if(x%i==0)
{
res=res/i*(i-1);
while(x%i==0) x/=i;
}
if(x>1) res=res/x*(x-1);
cout<<res<<endl;
}
return 0;
}
数学公式的推导是我最擅长的
ϕ(n)=k∏i=1ϕ(paii)=k∏i=1paii−pai−1i=k∏i=1paii(1−1pi)=nk∏i=1(i−1pi)
挺好奇的你那个
算法基础课题解
中链接是怎么放的写题解那里有个像锁链一样的东西就是链接啊
光光放链接我当然会,把它和代码块结合在一起试过不行啊
这样
[`AcWing`](https://www.acwing.com)
把代码块放[]里
AcWing