関数の以下の最小限のコードをMaxPower()
よりメモリ効率的にする方法と、私のコードを使用した例を探しています。
の目的MaxPower()
: 整数i
およびについて、 を割るなどN_remainder
の最大値を返します。m
i^m
N_remainder
MaxPower()
除算のfactorise()
場合にのみ関数で呼び出されますi
N_remainder
現在、以下のリンクされたコードには、因数分解する数値の次の結果があります (標準形式で記述):
- 1x10^8 - 正常に動作します。結果の 2 つの配列が生成され、正しい
- 5x10^8 - Linux がハングアップし、OS がまったく応答しなくなります。コンピュータを再起動する必要があります。
- 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
私は次のことを認識しています(これは、現在、新しくて深みがないので試していません)。
- コンパイルされたCコードでより多くの作業を行うことができます-「リスト内包表記」に変換します
- スレッドを使用し、使用後に各スレッドが削除されていることを確認してください。