알고리즘 연습

C++ 2581 소수

728x90

#include<iostream>

using namespace std;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	int m, n;
	cin >>m >> n;
	int cnt = 0;
	int max=0;
	int min = -1;

	for (int i = m;i <= n;i++) {
		for (int j = 1; j <= i; j++) {
			if (i % j == 0)
				cnt++;
		}
		if (cnt == 2) {
			if (min == -1)
				min = i;

			max += i;

		}
		cnt = 0;
	}

	if (min == -1)
		cout << -1 << '\n';
	else
		cout << max << '\n' << min << '\n';
}

 

여러 블로그를 보았는데 이분이 제일 코드도 깔끔하고 간략하게 설명을 잘 해주셨다.

https://codesyun.tistory.com/64?category=966171 

 

[BOJ/백준] 2581번 소수 C++ 문제 풀이

단계별로 풀어보기 - 수학 2단계 - [2단계] 2581번 문제 문제 링크 : www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값..

codesyun.tistory.com

 

소수를 구하는 문제는 숫자를 자신보다 작거나 같은수소 나누었을 때 나머지가 0이 2개만 존재하면 조건이 성립된다.

	for (int i = m;i <= n;i++) {
		for (int j = 1; j <= i; j++) {
			if (i % j == 0)
				cnt++;
		}
		if (cnt == 2) {
			cout<<i;
		}
		cnt = 0;
	}

m부터 n까지의 소수를 나타내는 코드이다.

 

첨엔 못풀겠었는데 생각하는법을 점점 늘려가는 기분이다.

728x90

'알고리즘 연습' 카테고리의 다른 글

C++ 4948 베르트랑 공준  (0) 2021.09.27
C++ 11653 소인수분해  (0) 2021.09.27
C++ 피보나치 수열  (0) 2021.09.27
C++ 2839 설탕배달  (0) 2021.09.27
C++ 2292 벌집  (0) 2021.09.25