对正整数 n,欧拉函数是小于等于 n 的数中与 n 互质的数的个数
性质摘要
1. a,b互质, f(a*b) =f(a)*f(b)
2. f(x^a) = (x-1)* f(x^(a-1))
3. if i%j==0 f(i*j)= f(i) *j
4. if i%j !=0 f(i*j)=f(i) * (j-1)
根号复杂度的求法依据公式
1 2 3 4 5 6 7 8 9 10 11 12 | void sov( int n){ int i,ans=n; for (i=2;i*i<=n;i++){ if (n%i==0){ ans=ans/i*(i-1); while (n%i==0) n/=i; } } if (n>1) ans=ans/n*(n-1); cout<<ans; } |
#include <iostream> #include<vector> using namespace std ; void sov(int n){ int i,fi=1; for(i=2;i*i<=n;i++){ if(n%i==0){ fi*=i-1; n/=i ; while(n%i==0) fi*=i, n/=i; } } if(n>1) fi*= n-1; cout<<fi; } signed main(){ sov(1690) ; }
线筛求法,依据3,4
const int M=1e6; int vis[M+4],P[M+4],cnt; int fi[M+4]; void shai(int top){ cnt=0; fi[1]=1; for(int i=2;i<=top;i++){ if(vis[i]==0){ P[++cnt]=i; fi[i]=i-1; } for(int j=1;j<=cnt&&i*P[j]<=top;j++){ vis[i*P[j]]=1; if(i%P[j]==0){ fi[i*P[j]]=fi[i]*P[j]; break; } else fi[i*P[j]]=fi[i]*(P[j]-1); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!