백준 1929번, 소수 구하기
백준 1929번 c++ 문제풀이
문제: M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
풀이:
어떤 수가 소수인지 판별 하기 위해서는 어떤 수 n의 제곱근을 구한 후, n을 2부터 제곱근 까지의 숫자로 나눴을 때에 나눠지면 소수가 아닌 것이다.
코드:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <math.h>
using namespace std;
bool findprime(int a){
if(a == 1){
return false;
}
else if(a >= 2){
int s = sqrt(a);
for(int j=2; j<=s; j++){
if(a % j == 0){
return false;
}
}
}
return true;
}
int main(){
int m, n;
cin >> m >> n;
for(int i=m;i<=n;i++){
if(findprime(i)){
cout << i << "\n";
}
}
return 0;
}
소수 구하는 조건에 맞는 판별 함수를 만들어 주고 풀면 된다. 소수 판별할 수 있는 방법을 알면 풀 수 있다.
This post is licensed under CC BY 4.0 by the author.