목록소수 판정 (11)
기록방
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/kYg1r/btszCKhrQtt/MXxZBk4ze6rgaREkmKKHcK/img.png)
👉 문제링크 1418번: K-세준수 첫째 줄에 N, 둘째 줄에 K가 주어진다. N은 100,000보다 작거나 같은 자연수이고, K는 100보다 작거나 같은 자연수이다. www.acmicpc.net 🔸 문제 분석 🔸 어떤 자연수의 소인수중 최대값이 K보다 크지 않으면 K-세준수이다. N이하의 자연수 중에 K-세준수의 개수를 구한다. 🔸 문제 풀이 🔸 1부터 N까지의 자연수들 각각 최대 소인수를 구하고, 그 값이 K를 넘는지 확인해야 한다. 소인수 인지 확인하기 위해 자연수를 N까지 키워간다. 현재 수가 소인수이면 그 수의 N보다 작은 배수들은 현재 수를 소인수 최대값으로 저장한다.(에라토스테네스의 체) 만약 현재 수가 이전에 배수로 소인수를 구했으면 그 수와 K를 비교하고, 이전에 구한 값이 없으면 현재 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bgODip/btrYH3ejwMU/w3qEOUyJLowSKQdzoPyPN1/img.png)
👉 문제링크 2312번: 수 복원하기 첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스마다 양의 정수 N (2 ≤ N ≤ 100,000)이 주어진다. www.acmicpc.net 🔸 문제 분석 🔸 양의 정수 N이 주어지면 소인수 분해 결과를 출력한다. 2부터 N까지 나누며, 몫이 1이 될 때까지 반복한다. 나눈 수를 카운트한다 카운트한 나눈 수 들중에서 값이 1 이상인 것들만 출력한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int tc = sc.nextInt(); StringBuilder sb = n..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eJO7Dg/btrWpoEGbMW/LL5Mp016KriXvqyf3tak31/img.png)
👉 문제링크 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 🔸 문제 분석 🔸 2부터 n까지 수를 선택한다. 선택한 수와 n까지의 배수들을 차례로 지운다. 지우지 않은 수가 남아있다면 반복한다. k번째 지운 수를 출력한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int count = 0; boolean[] arr = new bo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bkDKs9/btrV1hdXMr3/GQsR0vZCmo52We2YGzT6ak/img.png)
👉 문제링크 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 🔸 문제 분석 🔸 입력 된 수 n보다 크고 2n이하인 소수의 개수를 출력한다. 0이 입력 될 때까지 반복한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { private static Scanner sc; public static void main(String[] args) { sc = new Scanner(System.in); int n = sc.nextInt(); while (n != 0) ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/of8re/btrV1g0qtoS/8yzgfQN2Ryns6IqrYMdokk/img.png)
👉 문제링크 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 🔸 문제 분석 🔸 입력받은 수의 소인수분해를 출력한다. 🔸 코드 🔸 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double n = sc.nextDouble(); int d = 2; while (n > 1) { if (n%d == 0) { n /= d; System.out.println(d--); } d++; } } } 🔸 코드 해석 🔸 숫자 n이 1이 될 때까지 2부터 키워가며 나눠본다. 나누어..