大家好,欢迎来到IT知识分享网。
欧拉函数是求解n以内和n互质的数的个数的函数。
性质1· Euler(mn) = Euler(m) * Euler(n);
性质2· Euler(m^n) = m^n – m^(n-1) = m^n * (1 – 1/m);
性质3· n = p1^k1 * p2^k2 * p3^ k3 ……..;
综上可知:
Euler(n)= Euler(p1^k1 * p2^k2 * p3…..);
p1,p2,p3,..为n的质因数;
某犇博客:想点就点
求法:
(1) 直接线性:
int Euler(int n) { int res = n; int a = n; for (int p = 2; p < n; p ++) { if (n % p == 0) { res = res/p *(p-1); while(n%p == 0) { n /= p; } } } if (a > 1) { res = res/a * (a-1); } return res; }
(2) 筛法:
int eul[maxn]; int Euler() { for (int i = 2; i < maxn; i++) { eul[i] =i; } for (int i = 2; i < maxn; i++) { if (eul[i] == i) { for (int j = i; j < maxn; j += i) { eul[i] = euler[j]/i * (i-1); } } } }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/154817.html