• toc {:toc}

๋ฌธ์ œ

์ž์—ฐ์ˆ˜ M๊ณผ N์ด ์ฃผ์–ด์งˆ ๋•Œ M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒƒ์„ ๋ชจ๋‘ ๊ณจ๋ผ ์ด๋“ค ์†Œ์ˆ˜์˜ ํ•ฉ๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์˜ˆ๋ฅผ ๋“ค์–ด M=60, N=100์ธ ๊ฒฝ์šฐ 60์ด์ƒ 100์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๋Š” 61, 67, 71, 73, 79, 83, 89, 97 ์ด 8๊ฐœ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋“ค ์†Œ์ˆ˜์˜ ํ•ฉ์€ 620์ด๊ณ , ์ตœ์†Ÿ๊ฐ’์€ 61์ด ๋œ๋‹ค.

์ž…๋ ฅ

์ž…๋ ฅ์˜ ์ฒซ์งธ ์ค„์— M์ด, ๋‘˜์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค.

M๊ณผ N์€ 10,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋ฉฐ, M์€ N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

์ถœ๋ ฅ

M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒƒ์„ ๋ชจ๋‘ ์ฐพ์•„ ์ฒซ์งธ ์ค„์— ๊ทธ ํ•ฉ์„, ๋‘˜์งธ ์ค„์— ๊ทธ ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๋‹จ, M์ด์ƒ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ค‘ ์†Œ์ˆ˜๊ฐ€ ์—†์„ ๊ฒฝ์šฐ๋Š” ์ฒซ์งธ ์ค„์— -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ถœ์ฒ˜:https://www.acmicpc.net/problem/2581

ํ’€์ด

bool is_primeNum(int x)
{
	int i = 2;
	while(i*i<=x)
	{
		if(x%i==0)
			return false;
		i++;
	}
	return true;
}

1978: ์†Œ์ˆ˜ ์ฐพ๊ธฐ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ์†Œ์ˆ˜ ํŒ๋ณ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ.

  1. m๋ถ€ํ„ฐ n๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ์†Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„. ์†Œ์ˆ˜์ด๋ฉด sum์— ๋”ํ•˜๊ณ  ์ฒ˜์Œ ์ฐพ์€ ๊ฐ’์„ min์— ๋„ฃ์–ด๋‘”๋‹ค. ํ˜น์‹œ ๋ชฐ๋ผ if๋ฌธ์„ ํ†ตํ•ด ์ตœ์†Ÿ๊ฐ’ ํŒ๋ณ„
  2. ์ฝ”๋“œ๋ฅผ ๋ช‡ ๋ฒˆ ๋Œ๋ ค๋ณด๋ฉด์„œ ์ด ๋ฌธ์ œ์˜ ์š”์ ์€ 1, 2๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฐ€๋ผ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌ. ๋จธ๋ฆฌ ๊ตด๋ฆฌ๋‹ค ๊ฒฐ๊ตญ ์ผ€์ด์Šค ๋ถ„๋ฅ˜๋ฅผ ํ†ตํ•ด ์ง€์ €๋ถ„ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•จ.

ํ™€์ˆ˜๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ ค๋‹ค ๋ณต์žกํ•ด์ง„ ๊ฒƒ ๊ฐ™๋‹ค.

#include <iostream>
 
using namespace std;
 
bool is_primeNum(int x);
 
int main()
{
	int m, n, sum=0, min = 10001, i;
	cin >> m >> n;
	
	if(m==1)
	{
		if(n>=2)
		{
			sum+=2;
			min=2;
			i = m;
		}
	}
	if(m==2)
	{
		sum+=2;
		min=2;
	}
	if(m%2==0)
	{
		i = m+1;
	}
	else
	{
		i = m;
	}
	
	for(i; i<=n; i+=2)
	{
		if(i == 1) continue;
		if(is_primeNum(i))
		{
			sum+=i;
			if(min > i)
				min = i;
		}
	}
	if(sum == 0)
		cout << -1 << endl;
	else
	{
		cout << sum << endl << min << endl;
	}
	
	return 0;
}
 
bool is_primeNum(int x)
{
	int i = 2;
	while(i*i<=x)
	{
		if(x%i==0)
			return false;
		i++;
	}
	return true;
}