【模板】歐拉函數
阿新 • • 發佈:2018-11-25
範圍 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 }
【模板】歐拉函數