同时,它也是密码系统不可缺少的极其重要的函数。
/* * 欧拉函数:数论中,对于正整数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; }