給定整數n,求n的歐拉函數的值
多組數據 每行一個整數,表示n( 1 <= n <= 1,000,000,000) 一個0,表示輸入結束
每行輸入一個整數,表示對應的n的歐拉函數值
7 12 0
6 4
要解決這道題,我們先來了解什么是歐拉函數和歐拉定理。
歐拉函數
n=
歐拉定理: 若a與m互質,則
所以,我們就得出了歐拉計算函數。
int euler(int n){ int m=int(sqrt(n+0.5)),ans=n; for(int i=2;i<=m;i++) if(n%i==0){ ans=ans/i*(i-1); while(n%i==0) n/=i; } if(n>1) ans=ans/n*(n-1); return ans;}新聞熱點
疑難解答