๋ฌธ์
https://www.acmicpc.net/problem/2581
์ค๋ช
์ด ๋ฌธ์ ๋ ์ด๋์ ๋ ์ํ์ ์ง์์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ์ ๊ทผํ๊ธฐ ๋ ์์ํด์ง๋ค. ์์๋ฅผ ๊ตฌ๋ณํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋๋ฐ ํนํ ํน์ ๋ฒ์๋ด์ ์์๋ฅผ ๊ตฌ๋ณํ๋๋ฐ์๋ [์๋ผํ ์คํ ๋ค์ค์ ์ฒด] ๋ฅผ ์ด์ฉํ๋ฉด ๋ ์์ํ๊ฒ ํ ์ ์๋ค.๋จผ์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅ๋ ์ ์๋ ๊ฐ์ ์๋ฌด๋ฆฌ ์ปค๋ด์ผ 10000 ์ ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด ํฌ๊ธฐ ๋ฅผ 10001 ๋ก ์ค์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ for๋ฌธ์ ์ด์ฉํ์ฌ ๋ชจ๋ 0 ์ผ๋ก ์ด๊ธฐํ ์ํจ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ฒฉ for๋ฌธ์ ์ด์ฉํ์ฌ ์์๊ฐ ์๋ ๊ฒ๋ค์ ํด๋นํ๋ ๋ฐฐ์ด์ 0 ์์ 1 ๋ก ๋ฐ๊พธ๋๋ก ํ์ฌ ์ต์ข ์ ์ผ๋ก ์์์ ํด๋นํ๋ ๋ฐฐ์ด๋ง์ด 0 ์ผ๋ก ๋จ์์๋๋ก ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ํด๋น ๋ฐฐ์ด์ด 0 ์ธ์ง 1 ์ธ์ง for๋ฌธ๊ณผ if๋ฌธ์ ์ด์ฉํ์ฌ ํ๋ ํ์ฌ ํด๋น ๋ฒ์๋ด์ ์ดํฉ๊ณผ ์์์ ์ต์๊ฐ์ ๊ตฌํ๋๋ก ํ์๋ค. loop_end ๋ผ๋ ๋ณ์์๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ฒ์์ ๋๋ถ๋ถ(end ๋ณ์)์ ์ ๊ณฑ๊ทผ ๊ฐ์ ๋ฃ์์ผ๋ก์จ ์ค์ฒฉ for๋ฌธ์ ํตํด ์์๋ฅผ ๊ฑธ๋ฌ๋ผ๋ ํ์ํ ์ํ์ ์ ์ค์ ํ์๋ค. ํ๋ก๊ทธ๋๋ฐ์ ํ๋๋ฐ์ ์ํ์ด ์ ๋ ํ์ ์๋ ๊ฒ์ด ์๋์ ๋ณด์ฌ์ฃผ๋ ๋ฌธ์ ์๋ค. (์ค๋ ํผ ๋ฌํฝ์ด ๋ฌธ์ ๋ ๋ ์๋ ์๋ฅ ์ค๋นํ๋ฉด์ ํ๋ฅ ๊ณผ ํต๊ณ์ ์์ด ๋จ์์์ ๋ฐฐ์ด โ๊ตฐโ์ ์ด์ฉํ์ฌ ํ์์ผ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ํ์ ๊ผญ ํ์ํด๋ณด์ธ๋ค.)
[์๋ผํ ์คํ ๋ค์ค์ ์ฒด] : https://namu.wiki/w/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98%20%EC%B2%B4
์ฝ๋
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
int start=0, end=0,first=0,tot=0;
scanf("%d", &start);
scanf("%d", &end);
int arr[10001];
for (int l = start-1; l <= end; l++)
arr[l] = 0;
arr[0] = 1;
int loop_end = sqrt(end);
for (int i = 2; i <= loop_end; i++)
for (int j = 2; i * j <= end; j++)
arr[(i * j) - 1] = 1;
for (int a = start; a < end+1; a++)
if (arr[a - 1] == 0)
{
tot += a;
if (first == 0)
first = a;
}
if (tot == 0 && first == 0)
printf("-1");
else
printf("%d\n%d", tot, first);
return 0;
}