Googleクラスルーム
GeoGebraGeoGebra Classroom

mutual Primeの関数

積の法則

1.素数から始めよう

<互いに素> このワークシートはMath by Codeの一部です。 素数」に似ているけど、便利な言葉「互いに素」は大切です。 最大公約数を求めるすだれ算をするとき、もう1以外の共通の約数がなくなるまで割り算しました。 これって、もう共通の約数、公約数という共通点が1しかなくなる状態にするということです。 共通な約数が1しかないことを、「互いに素」というのでした。 互いに素は、「最大公約数が1」だと言い換えることもできるね。 最大公約数を求めるたびに、互いに素のお世話になります。 しかし、互いに素はそれ以外に大切な使い道があります。 <オイラーのφ関数> 互いに素な数の個数です。 たとえば、分母が10の分数で1以下の分数の分子を並べてみます。 1,2,3,4,5,6,7,8,9,10の10個あります。 このうち、約分できるものを取り除いてみよう。 1,3,7,9の4個 この4個が10と1しか公約数がない疎遠な数、 10とは互いに素な数です。 10に対して、1から10までの数のうち互いに素な整数の個数4を答える関数が オイラーのφ関数です。 だから、この場合は、φ(10)=4ですね。 <φは割合から> φ関数のしくみの基本は2つあります。 1つめは「素数pのφはp-1だ。つまり、φ(p)=p-1ということです。」 たとえば、 1から2までの2数{1,2}のうち、2と互いに素な数は2以外の{1}の1個。φ(2)=1。 1から3までの3数{1,2,3}のうち、3と互いに素な数は3以外の{1,2}の2個。φ(3)=2。 1から5までの5数{1,2,3,4,5}のうち、5と互いに素な数は5以外の{1,2,3,4}の4個。φ(5)=4。 1から素数pまでのp個数{1,2,...,p-1.p}のうち、pと互いに素な数はp以外の{1,2,...,p-1}のp-1個。 つまり、φ(p)=p-1だね。 これを割合でイメージすると、あとにつながります。 p個中のpの倍数は1個です。 pの倍数の割合は です。 pの倍数でない割合は です。 素数pのn乗でもpの倍数の割合はなので、pの倍数でない割合は ですね。 1から22までの4数{1,2,3,4}のうち、22と互いに素な数は2と素な{1,3}の2個。 φ(22)=4(1-1/2)=2。 1から23までの8数{1,2,3,4,5,6,7,8}のうち、23と互いに素な数は2と素な{1,3,5,7}の4個。 φ(23)=8(1-1/2)=4。 1から32までの9数{1,2,3,4,5,6,7,8,9}のうち、32と互いに素な数は3と素な{1,2,4,5,7,8}の6個。 φ(32)=9(1-1/3)=6。 1から33までの27数{1,2,3,..., 25,26,27}のうち、33と互いに素な数は3と素な{1,2,...,25,26}の18個。 φ(23)=27(1-1/3)=18。 だからφ(pn)=pn()=となるね。 <互いに素なら割合効果は分離できる> φ関数のしくみの基本は2つあります。 2つめは「2素数p,qの積pqのφは、p,qのφの積だ。つまり、φ(pq)=φ(p)φ(q)です。 1から6までの6数{1,2,3,4,5,6}のうち、2と素な数のうち3と素な数。 {1,3,5}のうち3と素な2個。φ(2・3)=6(1-1/2)(1-1/3)=2。 言い換えると、φ(2・3)=2(1-1/2)・3(1-1/3)=(2-1)(3-1)=φ(2)φ(3)。 1から10までの10数{1,2,3,4,5,6,7,8,9,10}のうち、2と素な数のうち5と素な数。 {1,3,5,7,9}のうち5と素な4個。φ(2・5)=10(1-1/2)(1-1/5)=4。 言い換えると、φ(2・5)=2(1-1/2)・5(1-1/5)=(2-1)(5-1)=φ(2)φ(5)。 1からpqまでのpq数{1,2,..,p-1,p,p+1,.....,pq-1,pq}のうち、pと素な数のうちqと素な数。 {1,2,...p-1,p+1,....,pq-1}のうちqと素な(p-1)(q-1)個。 φ(p・q)=pq(1-1/p)(1-1/q)=(p-1)(q-1)。 言い換えると、φ(p・q)=p(1-1/p)・q(1-1/q)=(p-1)(q-1)=φ(p)φ(q)。 だから、φ(pq)=φ(p)φ(q) <オイラー関数の一般形> 整数の素因数分解をn=apbqcr.....とすると、 φ(n)=φ(ap)φ(bq)φ(cr)...... =(ap)(1-1/a)(bq)(1-1/b)(cr)(1-1/c)........ =(ap)(bq)(cr)...(1-1/a)(1-1/b)(1-1/c).... = n (1-1/a)(1-1/b)(1-1/c).... 質問:geogebraでオイラー関数を作るにはどうしたらよいですか。 <geogebraで作るオイラー関数> ps=Unique(PrimeFactors(n)) #素因数分解してユニークな素因数リストを作る zs=Zip(1-1/a,a,ps) #素因数の倍数を除く割合のリストを作る rs=Product(zs) #除く割合をかける eu = n rs #nに除く割合の積をかければ、オイラー関数

geogebraでもφ関数

2.juliaでオイラー関数

#[IN]julia #========================================================== function isPrime(n) lim = Int(round(n^0.5)) if n<2 return false end for num in 2:lim if n % num ==0 return false end end return true end function eu(n) divs=filter( m -> n % m==0,1:n) #nの約数リスト ps= filter(p -> isPrime(p),divs) #nの素因数リスト zs= [1-1/x for x in ps] #素数の倍数を除く割合リスト return Int(n *prod(zs)) end eu(124) #========================================================== #[OUT] 60