fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 34554 (C++) 특수한 정수 쌍
최초 업로드: 2025-10-02 15:16:01
최근 수정 시간: 2025-10-02 15:16:01
게시자: rlatjwls3333
카테고리: 백준
조회수: 4
# [Silver IV] 특수한 정수 쌍 [문제 링크](https://www.acmicpc.net/problem/34554) ## 문제 설명 <p>다음 조건을 만족하는 두 양의 정수 $(A, B)$를 좋은 쌍으로 정의합니다.</p> <ul> <li>$A < B$ 입니다.</li> <li>$B - A = N$ 입니다.</li> <li>$A \times B$ 의 약수의 개수는 정확히 $2$개입니다.</li> </ul> <p>정수 $N$이 주어졌을 때, 좋은 쌍 $A, B$를 모두 찾으십시오.</p> ## 입력 <p>첫째 줄에 테스트 케이스의 개수 $T$가 주어집니다. ($1 \leq T \leq 1\,000$)</p> <p>둘째 줄부터 $T$개의 줄에 걸쳐 정수 $N$이 주어집니다. ($1 \leq N \leq 10\,000$)</p> ## 출력 <p>각 테스트 케이스의 첫째 줄에 좋은 쌍의 개수 $K$를 출력합니다.</p> <p>다음 $K$개의 줄에 걸쳐, 조건을 만족하는 좋은 쌍 $(A, B)$를 $A$에 대한 오름차순으로 한 줄에 한 쌍씩 공백으로 구분하여 출력합니다.</p> <p>모든 테스트 케이스에 대한 좋은 쌍의 개수의 합은 $10^6$을 넘지 않음이 보장됩니다.</p> ## 풀이 1과 N+1의 쌍을 선택하여 N+1이 소수인 경우에 유일하게 좋은 한 쌍이 나온다. ``` c++ #include<bits/stdc++.h> using namespace std; bool isSosu(int n) { for(int i=2;i*i<=n;i++) { if(n%i==0) return false; } return true; } int main() { ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; while(t--) { int n; cin >> n; if(isSosu(n+1)) cout << "1\n1 " << n+1 << '\n'; else cout << "0\n"; } } ```