๋ฌธ์ œ

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;
}