BEAKJOON

백준(1929번 소수구하기)풀이 C++

Shin_jisoo 2021. 1. 13. 15:34
728x90

www.acmicpc.net/problem/1929

 

1929번: 소수 구하기

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

www.acmicpc.net

1) 주석 없는 VERSION

#include <stdio.h>
#include <iostream>
#include <string>
#include <cmath> 

using namespace std;

int find(int n) {
	if (n <= 1) {
		return false;
	}

	for (int i = 2;i <= sqrt(n);i++) {
		if (n % i == 0) {
			return false;
		}
	}
	
	return true;
}

int main() {
	int m, n;
	cin >> m >> n;

	for (int i = m;i <= n;i++) {
		if (find(i)) {
			cout << i << "\n";
		}
	}
}

 

2) 주석 있는 VERSION

#include <stdio.h>
#include <iostream>
#include <string>
#include <cmath> 

using namespace std;

//소수 찾는 함수
//에라토스테네스의 소수 필요 충분조건사용
int find(int n) {

	// 1 이하는 소수가 아니다
	if (n <= 1) {
		return false;
	}

	// 2보다 크면서 자기 자신의 제곱근까지의 수에 나누어지지 않는 수가 소수
	for (int i = 2;i <= sqrt(n);i++) {
		
		// 나누어진다면 false
		if (n % i == 0) {
			return false;
		}
	}
	
	//나누어 지지 않는다면 true
	return true;
}

int main() {
	int m, n;
	cin >> m >> n;

	// m부터 n까지 함수를 호출해 소수라면 출력
	for (int i = m;i <= n;i++) {
		if (find(i)) {
			cout << i << "\n";
		}
	}
}