欧拉函数是数论中的一个重要函数。
同时,它也是密码系统不可缺少的极其重要的函数。
/*
* 欧拉函数:数论中,对于正整数n,欧拉函数是小于n的数中与n互质的数的数目。
* 此函数以其首名研究者欧拉命名(Ruler'so totient function),
* 又称为Euler's totient function、φ函数、欧拉商数等。
*
*/
#include <stdio.h>
int eular(int n)
{
int ret=1, i;
for(i=2; i*i<=n; i++) {
if(n%i == 0) {
n /= i;
ret *= i-1;
while(n%i == 0) {
n /= i;
ret *= i;
}
}
}
if(n>1)
ret *= n-1;
return ret;
}
int main(void)
{
int i;
for(i=2; i<=100; i++)
printf("i=%d eular=%d\n", i, eular(i));
return 0;
}
关键代码:
/* 欧拉函数 */
int eular(int n)
{
int ret=1, i;
for(i=2; i*i<=n; i++) {
if(n%i == 0) {
n /= i;
ret *= i-1;
while(n%i == 0) {
n /= i;
ret *= i;
}
}
}
if(n>1)
ret *= n-1;
return ret;
}