- 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: ์์ ์ฐพ๊ธฐ์์ ์ฌ์ฉํ๋ ์์ ํ๋ณ ํจ์๋ฅผ ์ฌ์ฉ.
- m๋ถํฐ n๊น์ง ๋ฐ๋ณต๋ฌธ์ ํตํด ์์์ธ์ง ํ๋ณ. ์์์ด๋ฉด sum์ ๋ํ๊ณ ์ฒ์ ์ฐพ์ ๊ฐ์ min์ ๋ฃ์ด๋๋ค. ํน์ ๋ชฐ๋ผ if๋ฌธ์ ํตํด ์ต์๊ฐ ํ๋ณ
- ์ฝ๋๋ฅผ ๋ช ๋ฒ ๋๋ ค๋ณด๋ฉด์ ์ด ๋ฌธ์ ์ ์์ ์ 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;
}