首页 > 代码库 > 欧拉函数模板
欧拉函数模板
1 int phi[5*K];
2 void init(int k)
3 {
4 phi[1]=1;
5 for(int i=2;i<k;i++) if(!phi[i])
6 for(int j=i;j<k;j+=i)
7 {
8 if(!phi[j]) phi[j]=j;
9 phi[j]=phi[j]/i*(i-1);
10 }
11 }
12 int euler(int x)
13 {
14 int ans=x;
15 for(int i=2;i*i<=x;i++)
16 if(x%i==0)
17 {
18 ans=ans/i*(i-1);
19 while(x%i==0) x/=i;
20 }
21 if(x>1)
22 ans=ans*x/(x-1);
23 return ans;
24 }
欧拉函数模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。