1. 程式人生 > >【模板】歐拉函數

【模板】歐拉函數

範圍 nbsp for 有一個 register pan span style line

 1 inline int Eular(int n) // [1,n]範圍內與n互質的數 
 2 {
 3     int last, num;
 4     last = num = n;
 5     for(register int i = 2; i * i <= n; i++)
 6     {
 7         if(!(last % i))
 8         {
 9             while(!(last % i)) last /= i;
10             num /= i;
11             num *= (i - 1);
12             //
num *= (i - 1) / i 13 // num *= 1 - 1 / i 14 } 15 } 16 if(last > 1) // 還有一個質數因子 17 { 18 num /= last; 19 num *= (last - 1); 20 } 21 return num; 22 }

【模板】歐拉函數