• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ArcTan

            dfs
            隨筆 - 16, 文章 - 117, 評論 - 6, 引用 - 0
            數據加載中……

            歐拉函數(資料+模板)

            http://zh.wikipedia.org/wiki/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0
            歐拉函數 :

            歐拉函數是數論中很重要的一個函數,歐拉函數是指:對于一個正整數 n ,小于 n 且和 n 互質的正整數(包括 1)的個數,記作 φ(n) 。

            完全余數集合:
            定義小于 n 且和 n 互質的數構成的集合為 Zn ,稱呼這個集合為 n 的完全余數集合。 顯然 |Zn| =φ(n) 。

            有關性質:
            對于素數 p ,φ(p) = p -1 。
            對于兩個不同素數 p, q ,它們的乘積 n = p * q 滿足 φ(n) = (p -1) * (q -1)  。
            這是因為 Zn = {1, 2, 3,  ... , n - 1} - {p, 2p, ... , (q - 1) * p} - {q, 2q, ... , (p - 1) * q} , 則 φ(n) = (n - 1) - (q - 1) - (p - 1) = (p -1) * (q -1)  =φ(p) * φ(q)

            歐拉定理 :
            對于互質的正整數 a 和 n ,有 aφ(n)  ≡ 1 mod n  。
            證明:
            ( 1 ) 令 Zn = {x1, x2, ..., xφ(n)} S = {a * x1 mod n, a * x2 mod n, ... , a * xφ(n) mod n}
                    則 Zn = S 。
                    ① 因為 a 與 n 互質, xi (1 ≤ i ≤ φ(n)) 與 n 互質, 所以 a * xi  與 n 互質,所以 a * xi  mod n ∈ Zn 。
                    ② 若 i ≠ j , 那么 xixj,且由 a, n互質可得 a * xi mod n ≠ a * xj mod n (消去律)。

            ( 2 )     aφ(n) * x1 * x2 *... * xφ(n) mod n
                 
            (a * x1) * (a * x2) * ... * (a * xφ(n)) mod n
                  
            (a * x1 mod n) * (a * x2 mod n) * ... * (a * xφ(n) mod n) mod n
                 
              x1 * x2 * ... * xφ(n) mod n
                  對比等式的左右兩端,因為
            xi  (1 ≤ i ≤ φ(n)) 與 n 互質,所以 aφ(n)  ≡  1 mod n (消去律)。
            注:
            消去律:如果 gcd(c,p) = 1 ,則 ac ≡ bc mod p ⇒ a ≡ b mod p 。

            費馬定理 :
            若正整數 a 與素數 p 互質,則有 ap - 1 ≡ 1 mod p


            這個是歐拉定理的特殊情況,p是素數,則p的歐拉函數就是p-1.

            補充:歐拉函數公式

            ( 1 ) pk 的歐拉函數

            對于給定的一個素數 p , φ(p) = p -1。則對于正整數 n = pk

             φ(n) = pk - pk -1

            證明:
            小于 pk 的正整數個數為 pk - 1個,其中
            和 pk 不互質的正整數有{p * 1,p * 2,...,p * (pk - 1-1)} 共計 pk - 1 - 1
            所以 φ(n) = pk - 1 - (pk - 1 - 1) = pk - pk - 1

            ( 2 ) p * q 的歐拉函數

            假設 p, q是兩個互質的正整數,則 p * q 的歐拉函數為

            φ(p * q) = φ(p) * φ(q) , gcd(p, q) = 1 。

            證明:
            令 n = p * q , gcd(p,q) = 1
            根據中國余數定理,有
            Zn 和 Zp × Zq 之間存在一一映射
            (我的想法是: a
            ∈ Zp , b ∈ Zq ⇔ b * p + a * q ∈ Zn 。
            所以 n 的完全余數集合的元素個數等于集合 Zp × Zq 的元素個數。
            而后者的元素個數為 φ(p) * φ(q) ,所以有
            φ(p * q) = φ(p) * φ(q) 。

            ( 3 ) 任意正整數的歐拉函數

            任意一個整數 n 都可以表示為其素因子的乘積為:

                  I
            n = ∏ piki (I 為 n 的素因子的個數)
            i=1

            根據前面兩個結論,很容易得出它的歐拉函數為:


            I I
            Φ(n) = ∏ piki -1(pi -1) = n
            (1 - 1 / pi)
            i=1
            i=1

            對于任意 n > 2,2 | Φ(n) ,因為必存在  pi -1 是偶數。


            轉自:http://blog.csdn.net/hillgong/article/details/4214327

            以下程序在http://acm.hrbeu.edu.cn/index.php?act=problem&id=1001&cid=25測試通過:

            Compile Error 一次 WA兩次 AC:3Ms
            總結:代碼要寫得快,熟練。一定要注意注意越界溢出啊啊啊啊!!!
            #include<stdio.h>
            #include
            <string.h>
            #include
            <math.h>
            #define inf 50000
            int prime[10005],b[51005],tot;
            int get_prime()
            {
                
            int i,j;
                memset(b,
            0,sizeof(b));
                tot
            =0;
                i
            =2;
                
            while (i<inf)
                
            {
                    
            while (b[i])    i++;
                    prime[
            ++tot]=i;
                    j
            =i;
                    
            while (j<inf)
                    
            {
                        b[j]
            =1;
                        j
            +=i;
                    }

                }

                tot
            --;
            }


            int main()
            {
                
            int i,j,k,p,n,m;
                
            long long ans;    //這里之前溢出 wa 2次!
                get_prime();
                
            while (scanf("%d",&n)==1&&n)
                
            {
                    ans
            =m=n;
                    i
            =1;
                    
            while (i<=tot)
                    
            {
                        
            if (n%prime[i]==0)
                        
            {
                            ans
            =ans*(prime[i]-1)/prime[i];
                            
            while (n%prime[i]==0)
                                n
            =n/prime[i];
                        }

                        i
            ++;
                    }

                    
            if (n>prime[tot])
                        ans
            =ans*(n-1)/n;
                    printf(
            "%lld\n",ans);
                }

                
            return 0;
            }



            做了好幾天數論了,好不容易AC一個題目!!啊啊啊啊

            posted on 2012-04-21 17:28 wangs 閱讀(502) 評論(1)  編輯 收藏 引用 所屬分類: ACM-數學

            日本久久久久久中文字幕| 18禁黄久久久AAA片| 国产午夜福利精品久久| 国产视频久久| 日韩AV无码久久一区二区| 国产成人香蕉久久久久| 久久久久久精品免费免费自慰| 久久av无码专区亚洲av桃花岛| 久久97久久97精品免视看| 色欲综合久久中文字幕网| 久久久久综合中文字幕| 色妞色综合久久夜夜| 日本久久久久久久久久| 91精品无码久久久久久五月天| 欧美精品国产综合久久| 久久WWW免费人成—看片| 国产∨亚洲V天堂无码久久久| 久久久久久午夜精品| 精品综合久久久久久88小说| 久久精品国产第一区二区三区| 香蕉久久影院| 亚洲综合久久久| 久久一区二区三区99| 久久久久99精品成人片| 国产精品va久久久久久久| 久久精品一区二区| 久久国产欧美日韩精品| 亚洲人成伊人成综合网久久久| 香蕉99久久国产综合精品宅男自| 久久久精品久久久久特色影视| 国产精品熟女福利久久AV| 狠色狠色狠狠色综合久久| 狠狠色丁香婷婷综合久久来 | 久久精品中文字幕有码| 久久精品国产精品国产精品污| 国产精品美女久久久久久2018| 亚洲中文字幕久久精品无码APP| 99久久99久久精品国产片果冻| 久久久久青草线蕉综合超碰| 久久精品国产亚洲AV香蕉| 人妻精品久久无码区|