package main import . "fmt" import . "os" import bf "bufio" func main() { rd := bf.NewReader(Stdin) wr := bf.NewWriter(Stdout) defer wr.Flush() sieve := make([]bool, 5e6+1) for i := 2; i < len(sieve); i++ { if sieve[i] { continue } for j := i+i; j 0; t-- { var a string var p int Fscan(rd,&a,&p) if !sieve[p] { Fprintln(wr, "1") } else { Fprintln(wr, "-1") } } } /* 考察 フェルマーの小定理より Pが素数なら(mod P)は(P-1)乗で1になり、階乗であるP!は(P-1)を含むので Pが素数なら1、合成数なら-1を出力する…? エラトステネスの篩で素数を事前に求めておいてO(1)で判定するが想定解ぽそうだけど math/bigの素数判定で処理した場合は間に合うかなあ…? ミラーレビンってやつだっけ? 間に合わなかったね、TLEした おとなしく篩使います WAした 1は素数ではない */