web-dev-qa-db-ja.com

pow関数を使用してmodを計算python

それで、pow関数を使用して6 ^ 8 mod 5の値を計算したい場合、何を行に入れればよいですか?

最初にインポートする必要がないという前提で

Powがpow(x、y)= pow(6、8)= 6 ^ 8のように使用されていることを知っています

私の推測は

mod.pow(6,8)

ありがとうございました!

11
mark T

簡単です。powは、係数のオプションの3番目の引数を取ります。

docs から:

pow(x, y[, z])

Xのy乗を返します。 zが存在する場合、xをyのモジュロzで返します(pow(x, y) % z)よりも効率的に計算されます。2つの引数の形式pow(x、y)は、累乗演算子を使用することと同等です:_x**y_ 。

あなたが望んでいるのは:

_pow(6, 8, 5)
_

pow(x, y, z)は_(x ** y) % z_より高速で効率的であるだけでなく、yが単純なマシン整数であると想定して、任意の精度の算術演算を使用せずにzの大きな値を簡単に処理できます。

24
PM 2Ring

pow のドキュメントを確認してください:

pow(6, 8, 5)

あなたがしたいことをします。

するしないa ** b % n!これにより正しい結果が得られますが、大きな数の計算を行うと、桁違いに遅くなります。 powはすべてのステップでモジュロ演算を実行しますが、**は最初に整数で指数を実行します(これにより、huge数)、最後にのみ係数をとります。

ここで、32ビットより大きい数値に関心がある場合は、速度をさらに上げるために gmpy2 を確認することをお勧めします。

4

'%'文字を使用してモジュロ値を取得できます。たとえば、print(pow(6,8) % 5)またはprint(6**8 % 5)などです。

0
Syed Ashraf