가짜소수
면접 대비시간 제한1초메모리 제한128 MB
각 입력에서 p가 합성수이면서 a^p mod p = a를 만족하는 의사소수인지 판정해 yes 또는 no를 출력한다.
문제
페르마의 소정리(Fermat's little theorem)는 다음과 같다.
가 소수이면, 보다 큰 임의의 정수 에 대해 가 성립한다. 즉, 를 제곱한 값을 로 나눈 나머지는 와 같다.
그런데 가 소수가 아니어도 어떤 정수 에 대해 위 합동식이 성립하는 경우가 있다. 이때 를 밑이 인 가짜소수(pseudoprime)라고 한다. (모든 에 대해 이 합동식을 만족하는 합성수를 카마이클 수라고 한다.)
와 가 주어졌을 때, 가 밑이 인 가짜소수인지 판별하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄에 두 정수 와 가 공백으로 구분되어 주어진다. 입력의 마지막 줄에는 0 0이 주어지며, 이 줄은 처리하지 않는다.
,
출력
각 테스트 케이스마다 가 밑이 인 가짜소수이면 yes를, 아니면 no를 한 줄에 하나씩 출력한다.