素数判定プログラム

素数判定の問題です(ALDS1_1_C)
わからなくて解答見たら、余計わからなくなりました。実行時間が0.03sのpython最速ですね。

def isPrime(p):
    if p == 2: return 1
    if p < 2 or p&1 == 0: return 0
    return 1 if pow(2,p-1,p) == 1 else 0
     
n = int(raw_input())
print sum(isPrime(int(raw_input())) for i in range(n))

わからないところは&演算子pow関数ですね。
調べてみると、&は2進数になおしたときの真理値表で、powはただ単に乗数でしたw

pow(a.b.c)=(a**b)mod(c)

結局、さまざまなものをパクって参考にして0.70sで通りましたー。
cocodrips.hateblo.jp