import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
br.close();
int i = 2;
while(N != 1) {
if(N%i==0) {
bw.write(i + "\n");
N /= i;
} else {
i++;
}
}
bw.flush();
bw.close();
}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
br.close();
int cnt = 0;
boolean flag;
for(int i=0;i<N;i++) {
int num = Integer.parseInt(st.nextToken());
if(num==1)
continue;
flag = true;
for(int j=2;j<num;j++) {
if(num%j == 0) {
flag = false;
break;
}
}
if(flag)
cnt++;
}
bw.write(String.valueOf(cnt));
bw.flush();
bw.close();
}
}
기존의 내가 풀었던 방식은 예제와 같은 값은 나오는데, 계속 결과는 틀렸습니다
가 나왔다.
(아래는 그 코드)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
br.close();
int cnt = 0;
for(int i=0;i<N;i++) {
int num = Integer.parseInt(st.nextToken());
if(num==1)
continue;
for(int j=2;j<num;j++) {
if(num%j==0)
break;
else if (j==num-1)
cnt++;
}
}
bw.write(String.valueOf(cnt));
bw.flush();
bw.close();
}
}
데이터를 임의로 많이 추가해보았더니, 2
일 경우를 흘리고 있었다는 걸 발견할 수 있었다.
if (num==2) {
cnt++;
continue;
}
그래서 for문 안에 위 코드를 추가했더니 맞았다.