欧拉函数和整除函数

1  欧拉函数

定义:

若n为正整数,不大于n且与n互素的数的个数成为欧拉函数,记为φ(n)。

公式:

φ(n)=n*(1-1/p1)*(1-1/p2)*……*(1-1/pn),其中p1、p2……pn为n的质因数;

若n为素数,φ(n)=n-1。

例如:

24=2*2*2*3

φ(24)=24*(1-1/2)*(1-1/3)=8

代码:

int oula(int n)
{
     int a=n,i;
     for(i=2; i<=n; i++)
         if(n%i==0)//第一次找到的必为素因子
         {
             a=a-a/i;
             while(n%i==0)
                 n/=i;//把该素因子全部约掉
         }
     return a;
}

2   整除函数(求正约数个数)

定义:

正整数n的正约数的个数,记为d(n)。

公式;

若n=p1α1*p2α2*……*pnαn

d(n)=(α1+1)*(α2+1)*......*(αn+1)。

例如;

d(24)=(3+1)*(1+1)=8。

时间: 2024-08-29 00:35:21

欧拉函数和整除函数的相关文章

欧拉函数知识点总结及代码模板及欧拉函数表

概念梳理: 欧拉函数是少于或等于n的数中与n互质的数的数目. 欧拉函数的性质:它在整数n上的值等于对n进行素因子分解后,所有的素数幂上的欧拉函数之积. 欧拉函数的值 通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数.φ(1)=1(唯一和1互质的数(小于等     于1)就是1本身). (注意:每种质因数只一个.比如12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)

数论快速入门(同余、扩展欧几里德、中国剩余定理、大素数测定和整数分解、素数三种筛法、欧拉函数以及各种模板)

数学渣渣愉快的玩了一把数论,来总结一下几种常用的算法入门,不过鶸也是刚刚入门, 所以也只是粗略的记录下原理,贴下模板,以及入门题目(感受下模板怎么用的) (PS:文中蓝色字体都可以点进去查看百度原文) 附赠数论入门训练专题:点我打开专题(题目顺序基本正常,用以配套数论入门) 一.同余定理 简单粗暴的说就是:若 a-b == m 那么 a%m == b%m 这个模运算性质一眼看出...直接上入门水题: Reduced ID Numbers 附AC代码(这个也没啥模板....知道就好) #inclu

欧拉函数性质以及模板

概念: 在数论,对正整数n,欧拉函数是小于n的数中与n互质的数的数目. 性质: ,其中p1, p2……pn为x的所有质因数,x是不为0的整数.φ(1)=1(唯一和1互质的数(小于等于1)就是1本身). (注意:每种质因数只一个.比如12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)=4 若n是质数p的k次幂, ,因为除了p的倍数外,其他数都跟n互质. 设n为正整数,以 φ(n)表示不超过n且与n互 素的正整数的个数,称为n的欧拉函数值,这里函数 φ:N→N,n→φ(n)称为欧拉

UVA12493 - Stars(求1-N与N互质的个数)欧拉函数

Sample Input 3 4 5 18 36 360 2147483647 Sample Output 1 1 2 3 6 48 1073741823 题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3937 题目大意:圆上有N个点把圆分成N等分,求隔相同的点能一笔画完所有点的方法: 思考:要一笔画出,那么(N,K)必定没有在

欧拉函数与欧拉定理

以下内容摘自acdreamer 定理一:设m与n是互素的正整数,那么 定理二:当n为奇数时,有. 因为2n是偶数,偶数与偶数一定不互素,所以只考虑2n与小于它的奇数互素的情况,则恰好就等于n的欧拉函数值. 定理三:设p是素数,a是一个正整数,那么 关于这个定理的证明用到容斥: 由于表示小于与互素数的正整数个数,所以用减去与它不互素的数的个数就行了. 那么小于与不互素数的个数就是p的倍数个数,有个.所以定理得证. 定理四:设为正整数n的素数幂分解,那么 这个定理可以根据定理一和定理三证明,其实用到

【SGU】SGU每日练1&#183;Coprimes【数论】欧拉函数

先介绍欧拉函数及其相关定理吧: 1.欧拉函数:对于任意一个数X,将其分解质因数为X=(P1^b1)*(P2^b2)*(P3^b3)...... 则小于X的与X互质的数的个数N为N = X * (1 - 1 / p1) * (1 - 1 / p2)....... 显然对于质数p,Euler(p) = p - 1: 2.一个数的所有质因子之和是euler(n)*n/2: 3.a^Euler(n) % n = 1,这里可以用模运算来证明: 具体实现: 1.先筛素数 2.从2开始遍历素数,能整除则乘,然

O(N)的素数筛选法和欧拉函数

首先,在谈到素数筛选法时,先涉及几个小知识点. 1.一个数是否为质数的判定. 质数,只有1和其本身才是其约数,所以我们判定一个数是否为质数,只需要判定2~(N - 1)中是否存在其约数即可,此种方法的时间复杂度为O(N),随着N的增加,效率依然很慢.这里有个O()的方法:对于一个合数,其必用一个约数(除1外)小于等于其平方根(可用反证法证明),所以我们只需要判断2-之间的数即可. bool is_prime(int num) { const int border = sqrt(num); for

HDU2824 The Euler function(欧拉函数)

题目求φ(a)+φ(a+1)+...+φ(b-1)+φ(b). 用欧拉筛选法O(n)计算出n以内的φ值,存个前缀和即可. φ(p)=p-1(p是质数),小于这个质数且与其互质的个数就是p-1: φ(p*a)=(p-1)*φ(a)(p是质数且p|a),因为欧拉函数是积性函数,φ(p*a)=φ(p)*φ(a): φ(p*a)=p*φ(a)(p是质数且p不能整除a),不知怎么理解.. 1 #include<cstdio> 2 #include<cstring> 3 using names

数论 - 欧拉函数模板题 --- poj 2407 : Relatives

Relatives Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11372   Accepted: 5544 Description Given n, a positive integer, how many positive integers less than n are relatively prime to n? Two integers a and b are relatively prime if ther