アールル

アールルの脳内知識、保管整理庫 センシティブな内容も一部含む予定です。 難聴の民。裸耳…

アールル

アールルの脳内知識、保管整理庫 センシティブな内容も一部含む予定です。 難聴の民。裸耳では、風切り音はすごく小さく聞こえるみたい。

マガジン

最近の記事

  • 固定された記事

素因数分解アルゴリズム(因数分解が既知の隣数から導く)

書き終わったらプログラムを書いて検証しようと思います。より小さい自然数で素因数分解が既知の場合に適用できる可能性のあるアルゴリズム。 基本の形はこれです。 $${pq-ab=1}$$ $${(p+1)(q+1)-1=ab}$$ 上式は素数界隈では有名な拡張ユークリッド法、ベズーの方程式、モジュラ逆数などの基礎となる式ですが、今回はこれに少し扱いやすいように変形を加えた式を軸に、素因数分解を目指そうと思います。 $${(p+1)(q+1)-1=ab}$$が成立するp,q

    • 一般数体ふるい法で使うふるいの実装トライアル

      一般数体ふるい法に使うふるいのプログラムを作ってみました。ただ、難しくてどう実装すればいいのかわからない計算式もあったので、できる範囲だけでの実装です。4桁くらいの小さい数までしかしっかりと動かせない感じです。 import numpy as npimport mathimport randomdef ugojod(a,b): if a<0: a*=-1 if b<0: b*=-1 if a>b: a,b=b,a

      • 素因数分解、目下更新中のコード置き場

        def kougo2alpha(als,r1,r2,s1=1,s2=1): return [((r1*als[i][0]+s1)*(r2*als[i][1]+s2),[(r1*als[i][0]+s1),(r2*als[i][1]+s2)]) for i in range(len(als))]def kougo4alpha(n,hls=[2,2],ils=[1,1]): ls=[[0,0],[0,1],[1,1],[1,0]] bls=[] r1,r2

        • 多元多次方程式の整数解を求めるための1番のショートカットは、整数を代入して因数分解してみること、、、

        • 固定された記事

        素因数分解アルゴリズム(因数分解が既知の隣数から導く)

        マガジン

        • 素因数分解
          16本
        • ガンマ関数
          2本
        • 部分積分
          4本
        • 多項式
          6本
        • 行列の固有値計算
          6本
        • リーマン予想
          2本

        記事

          素因数(5桁×5桁×6桁)までの素因数分解までは確認できた!

          前回の記事の続きです。素因数分解を試すプログラムをもう少し検討した結果、大幅な軽量化と素因数分解能力の改善、強化に成功したので記録します。 前回の記事 行ったのは大幅な変更で、前回までに話した$${(ma+n)(mb+n)}$$の形を変形するとこまでは一緒ですが、そこから先は大きく変わり、コードはかなりシンプルになりました。(ただ、まだ検証がしっかりと進んでいませんが、確実に分解できるというほどではないようです。条件を取り直して何度か試せばたぶん分解できるだろうというくら

          素因数(5桁×5桁×6桁)までの素因数分解までは確認できた!

          コードだけ先に…

          def nikou(a,d=[]): dd=[] #print(a,len(a),d) if len(a)==1: if len(d)==0: return [a] for i in range(len(d)): dd+=[a+d[i],d[i]] return dd else: #print(a,len(a),d) if len(d)==

          コードだけ先に…

          隣数から1程度の少しだけ大きい数を2つの数の掛け算のまま表現できるプログラム

          今回は記事もプログラムも短いです。余分なモジュールも一切要りません。 プログラム例 def nup(a,b,r): #a=2*(2*x+1)-x-1 x=0 xls=[] wls=[] w=0 for i in range(3,100): if (r+a*b)%i==0 and a>i: #print(i) x=(a+(i-a)%i)//i w=(-a)%i

          隣数から1程度の少しだけ大きい数を2つの数の掛け算のまま表現できるプログラム

          【できました】素因数分解界のゲームチェンジャー(になるかもしれない)アルゴリズム

          こないだの記事から派生させて作っていたプログラムがついに素因数分解をしました! ということで素案のプログラムを書き出しておきます! def kyoritan(pa,uug,ko=0): #ko=0 #print(pa,uug) for i in range(27,-1,-1): if abs(ko*(ko+uug)+uug-pa)>abs((ko+2**i)*(ko+2**i+uug)+uug-pa): ko+=2**

          【できました】素因数分解界のゲームチェンジャー(になるかもしれない)アルゴリズム

          xy-ab=1において、abがpq+p+qの形で表せる時には、p+1とq+1は合い掛けてxyになるxyの因数であることが保証される。逆に、この形のxyとabの組みがある時には、xyの因数とわかっているrstにおいて、rs+r+sの形の因数がabの側に存在する可能性は高い。

          xy-ab=1において、abがpq+p+qの形で表せる時には、p+1とq+1は合い掛けてxyになるxyの因数であることが保証される。逆に、この形のxyとabの組みがある時には、xyの因数とわかっているrstにおいて、rs+r+sの形の因数がabの側に存在する可能性は高い。

          (p+1)(q+1)-1=ab…にて、大きな素数が一方に出る条件は何だろう?

          (p+1)(q+1)-1=ab…にて、大きな素数が一方に出る条件は何だろう?

          フェルマーテストを用いてa^2-b^2=Nとなる組み合わせをpythonで探す。

          久しぶりに素因数分解の話。 フェルマーテストとは、 $${a^{\tfrac{n-1}{2}}mod \quad n=1}$$ をnが素数の時に満たせば、aはnに対する平方剰余である。つまり、nを底とする剰余で2乗するとaになるものが存在することになることを利用して、ある数が素数を底として、また別のある数に対する平方数であるかどうかを判定する方法です。 ちなみに、全ての平方数は、全ての素数を底とする平方剰余であることは簡単に示すことができます。 今回は、平方数のこの性

          フェルマーテストを用いてa^2-b^2=Nとなる組み合わせをpythonで探す。

          合同式の計算でかつn=64^3(=262144)で計算してみると、ざっと0.47秒、まあそんなに早いわけではなさそう。→修:0.1秒。素の階乗計算であれば約2秒でした。

          合同式の計算でかつn=64^3(=262144)で計算してみると、ざっと0.47秒、まあそんなに早いわけではなさそう。→修:0.1秒。素の階乗計算であれば約2秒でした。

          階乗の計算(python)

          階乗の高速計算ができそうなコードを作ってみました。 def dif(a,b,c,d): ac=c-a bd=d-b return a*bd+d*aclis=[1,2,3,4]lis=[5,6,7,8]lis=list(range(1,17))lis2=[]for i in range(2):#ループの回数。4**i lens2=[] lens=len(lis)//4 for j in range(lens): dif1=di

          階乗の計算(python)

          a-b=4 c-d=4 のときac-bdは4の倍数であることが簡単に示せるんだけど、これ階乗計算に使えるだろうか?

          a-b=4 c-d=4 のときac-bdは4の倍数であることが簡単に示せるんだけど、これ階乗計算に使えるだろうか?

          人生の主役は自分

          人生の主役は自分

          ある数を法とする平方剰余から元の平方根を求めるプログラム

          def ugojo(a,b): if a<0: a*=-1 if b<0: b*=-1 if a>b: a,b=b,a while a>0: a,b=b%a,a #print(a,b) return bdef xgcd(a,b): x0,y0,x1,y1=1,0,0,1 while b!=0: q,a,b=a//b,b,a%b x0,x1

          ある数を法とする平方剰余から元の平方根を求めるプログラム