原根判断
C++ GESP真题 五级 2025.3 #2
EXY-PG-0189
时间限制:1s 内存限制:512MB

题目描述

小 A 知道,对于质数 $p$ 而言,$p$ 的原根 $g$ 是满足以下条件的正整数:

  • $1<g<p$;
  • $g^{p-1}\bmod{p}=1$;
  • 对于任意 $1\le i<p-1$ 均有 $g^i\bmod{p}\neq1$。

其中 $a\bmod{p}$ 表示 $a$ 除以 $p$ 的余数。

小 A 现在有一个整数 $a$,请你帮他判断 $a$ 是不是 $p$ 的原根。

输入格式

第一行,一个正整数 $T$,表示测试数据组数。

每组测试数据包含一行,两个正整数 $a,p$。

输出格式

对于每组测试数据,输出一行,如果 $a$ 是 $p$ 的原根则输出 Yes,否则输出 No

样例说明

样例 1
输入:
3
3 998244353
5 998244353
7 998244353
输出:
Yes
Yes
No

数据范围

对于 $40\%$ 的测试点,保证 $3\le p\le10^3$。

对于所有测试点,保证 $1\le T\le20$,$3\le p\le10^9$,$1\lt a \lt p,p$ 为质数。