Algorithm/Cases-BOJ
소수 판별
Xi_kor
2020. 4. 25. 21:15
문제
자연수n,m이 주어질 때, n부터m까지 존재하는 소수를 모두 출력하는 프로그램을 작성하여라. 여기서 소수란, 약수가 1과 자기자신밖에 존재하지 않는 수를 말한다.
입력
첫째 줄에 자연수 n, m이 주어진다. (1≤n,m≤20,000)
출력
첫째 줄에 n부터m까지 존재하는 소수를 모두 출력한다.
예제 입력
1 10
예제 출력
2 3 5 7
예제 입력
13 30
예제 출력
13 17 19 23 29
------------------------------------------------------------------------------------------------------------------------------
n과 m의 범위가 1부터 20000까지이므로 최대한 시간을 줄이기 위해 소수를 찾을 때 2부터 해당 수의 루트까지 찾는 방식으로 짜보았음. 나눠지는 수가 있으면 status 라는 정수형 변수의 값을 바꾸고 break 시키는 방식으로 진행하였음.
#include <iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
for (int i = n; i <= m; i++) {
int status = 0;
for(int j=2; j*j<=i; j++){
if (i % j == 0) {
status = 1;
break;
}
}
if (status == 0&&i!=1) cout << i << " ";
}
return 0;
}