printРабочее место участника


1041. Pseudoprime numbers

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Fermat's theorem states that for any prime number `p` and for any integer `a\ >\ 1`, `a^p\ =\ a\ (mod\ p)`. That is, if we raise `a` to the `p`th power and divide by `p`, the remainder is `a`. Some (but not very many) non-prime values of `p`, known as base-`a` pseudoprimes, have this property for some `a`. (And some, known as Carmichael Numbers, are base-`a` pseudoprimes for all `a`.)
Given `2\ <\ p\ ≤\ 1\ 000\ 000\ 000` and `1\ <\ a\ <\ p`, determine whether or not `p` is a base-`a` pseudoprime.
Input contains several test cases followed by a line containing "0 0". Each test case consists of a line containing `p` and `a`. For each test case, output "yes" if p is a base-`a` pseudoprime; otherwise output "no".

Sample Input

3 2
10 3
341 2
341 3
1105 2
1105 3
0 0

Output for Sample Input

Source: Gordon V. Cormack, Waterloo local contest, 2007