-4

関数の以下の最小限のコードをMaxPower()よりメモリ効率的にする方法と、私のコードを使用した例を探しています。

の目的MaxPower(): 整数iおよびについて、 を割るなどN_remainderの最大値を返します。mi^mN_remainder

MaxPower()除算のfactorise()場合にのみ関数で呼び出されますiN_remainder

現在、以下のリンクされたコードには、因数分解する数値の次の結果があります (標準形式で記述):

  1. 1x10^8 - 正常に動作します。結果の 2 つの配列が生成され、正しい
  2. 5x10^8 - Linux がハングアップし、OS がまったく応答しなくなります。コンピュータを再起動する必要があります。
  3. 1x10^9 - ターミナルでメモリ エラーが発生します。

使用される Python バージョンは、Linux Mint 17 で 2.74 です。

私は現在pythonを学んでいます。

def MaxPower(i,N_remainder):
    m=1
    MxP=1
    for n in range (2, N_remainder + 1):        
        b = i**n    
        a = N_remainder % b
        if a==0:    
            m = m+1                 
        else: 
            MxP = m     
            break
    return MxP

最初に投稿されてから修正されたコード:

def MaxPower(i,N_remainder):
    m=1
    MxP=1
    for n in xrange (2, N_remainder + 1):       
        b = pow(i,n)        
        a = N_remainder % b
        if a==0:    
            m = m+1                 
        else: 
            MxP = m     
            break
    return MxP

私は次のことを認識しています(これは、現在、新しくて深みがないので試していません)。

  1. コンパイルされたCコードでより多くの作業を行うことができます-「リスト内包表記」に変換します
  2. スレッドを使用し、使用後に各スレッドが削除されていることを確認してください。
4

1 に答える 1