์์ ํฉ์ฑ์ ๊ทธ๋ฆฌ๊ณ ๋ฃจํธ
KH ๋น์ฐ์ง์์์์ 10์ผ์ฐจ.
๊ฐ๋์ ์ฌ์ด ๋ฌธ์ ๋ก ํ๋ญํด ํ๊ธฐ๋, ์ด๋ ค์ด ๋ฌธ์ ๋ก ๊ณ ๋ฏผ์ ๋น ์ง ๋๋ ์์ง๋ง ๋ชจ๋ ๊นจ๋ฌ์์ ์ฐ์์ด์๊ธฐ์ ๊ทธ ์๊ฐ์๊ฐ์ด ํ๋ณตํ๋ค.
์์์ ํฉ์ฑ์ ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฅผ ์ฐ์ฐํ๋ ๊ณผ์ ์ ๋ํ ์ดํด๋ฅผ ํ๊ธฐ ์ ๊น์ง๋ ๋ง์ด๋ค.
์์์ ํฉ์ฑ์๋ ๋ฌด์์ผ๊น?
์์๋ 1 ๊ณผ ์๊ธฐ ์์ ์ผ๋ก๋ง ๋๋์ด์ง๋ ์์ด๊ณ , ํฉ์ฑ์๋ 1๊ณผ ์๊ธฐ ์์ ์ ํฌํจํ ๋ค๋ฅธ ์๋ก๋ ๋๋์ด์ง๋ ์๋ฅผ ํฉ์ฑ์๋ผ๊ณ ํ๋ค.
(์ฌ๊ธฐ์ ๋๋์ด์ง๋ค๋ ๊ฒ์ ๋๋จธ์ง ๊ฐ์ด 0์ด๋ผ๋ ์๋ฏธ์ด๋ค.) (๋ ์์ธํ ์ด๋ก ์ ๊บผ๋ฌด์ํค์์)
๊ทธ๋์ ๊ฐ๋จํ ์์๋ค์
๋ค์ด๋ณด์๋ฉด,
์์ : 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31 ...
ํฉ์ฑ์ : 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24 ...
์ด๋ฐ ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , ์ฌ๊ธฐ์ 2๋ ์์์์ ์ ์ผํ ์ง์์ด๋ฉฐ 2๋ฅผ ์ ์ธํ ๋ชจ๋ ์ง์๋ค์ ํฉ์ฑ์์ด๋ค.
๋ฌธ์ ๋ ์ด๊ฑฐ๋ค.
์ด๋ป๊ฒ ํ๋ฉด ์ปดํจํฐ๊ฐ ์ฐ์๋๋ ์ด ๋ชจ๋ ์ซ์๋ค์ด ์์์ธ์ง ํฉ์ฑ์์ธ์ง ํ์ธํ ์ ์๊ฒ ๋ง๋ค์ง?
์ฆ, ๋ด๊ฐ ์ด๋ป๊ฒ ์ด๊ฑธ ์ฐ์ฐํด์ ์ฝ๋๋ก ์ฎ๊ฒจ ์ ์ง? ๊ฐ ๊ฐ์ฅ ํฐ ๋ฒฝ์ด์๋ค.
ํ์ง๋ง ์ฌ๋์ ์๊ฐ์ด ์ฝ์ด๊ณ , ๋ชจ๋ ์ผ์๋ ๋๊ฐ ์๋ ๊ฒ ์ฒ๋ผ ์ด ๋ํ ๊ทธ๋ฅ ๊ณ์ ๋ฐ๋ณตํ๊ณ ์๊ฐํ๋ค ๋ณด๋ ํ ์ ์๊ณ , ์ดํด ํ ์ ์๊ฒ ๋์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ?
๋จผ์ ์์ ๋งํ ์์์ ํฉ์ฑ์์ ํน์ง์ ํ์ ํ๋ค๋ฉด ์กฐ๊ธ ๋ ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ ๊ฒ์ด๋ค.
์์๋ 1๊ณผ ์๊ธฐ ์์ ์ ์ ์ธํ ๋๋จธ์ง ์๋ก ๋ฑ ๋๋์ด ๋จ์ด์ง์ง ์๋๋ค.
์ฆ, ์์๋ 1 ๋ถํฐ ์์ ์๊ธฐ ์์ ์ฌ์ด์ ๋ชจ๋ ์๋ฅผ ๋๋์์ ๋
๋๋จธ์ง๊ฐ 0์ด ๋๋ ๊ฒฝ์ฐ๋ 2๊ฐ์ง ๋ฟ์ด๋ฉฐ ์ด๊ฑธ 0์ ๊ฐ์๋ก ์ผ๋ค๋ฉด 0์ ์ด 2๊ฐ๋ค.
๊ทธ๋ ๋ค๋ฉด ํฉ์ฑ์๋ ์์์ ๋ฐ๋๋๊น ๋ฌด์กฐ๊ฑด 0์ ๊ฐ์๋ 2๊ฐ ์ด์์ด๋ผ๋ ๋ง์ด๋ค.
์๋ฅผ ๋ค์ด, 8์ด ์์์ธ์ง ํฉ์ฑ์์ธ์ง ํ์ธํด๋ณด์. (์ฌ๋์ ๋ณด์๋ง์ ํฉ์ฑ์๋ผ๋๊ฑธ ์์ง๋ง ์ปดํจํฐ๋ ์๋๋ค.)
8 / 1 = 8 (0)
8 / 2 = 4 (0)
8 / 3 = 2 (2)
8 / 4 = 2 (0)
8 / 5 = 1 (3)
8 / 6 = 1 (2)
8 / 7 = 1 (1)
8 / 8 = 1 (0)
8์ 1 ๋ถํฐ 8 ๊น์ง ๋๋์์ ๋ ๋๋จธ์ง๊ฐ 0์ด ๋๋ ๊ฒฝ์ฐ๋ 4 ๊ฒฝ์ฐ์ด๋ค.
1 , 2 , 4 , 8
ํ์ง๋ง, ๋ชจ๋ ์๋ 1 ํน์ ์๊ธฐ ์์ ์ผ๋ก ์์ ์ ๋๋์์ ๋ ๋๋จธ์ง๋ ๋ฌด์กฐ๊ฑด 0์ด๋ค. ๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ๋ ์ ์ธํ๊ณ
2 ๋ถํฐ (์๊ธฐ ์์ - 1) ์ฌ์ด์ ๋ชจ๋ ์๋ฅผ ๋๋ด์ ๋ 0์ด ํ๊ฐ๋ผ๋ ๋์ค๋ฉด ๊ทธ ์๋ ๋ฌด์กฐ๊ฑด ํฉ์ฑ์์ด๋ค.
์๋๋ฉด ์ด๋ฏธ 1๊ณผ ์๊ธฐ ์์ ์ผ๋ก ๋๋์์ ๋ 0์ด 2๋ฒ ๋์๊ณ , ์์๋ ๋๋จธ์ง๊ฐ์ด 0์ธ ๊ฒฝ์ฐ๋ ๋ฑ 2๊ฐ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ ์ฝ๋๋ก ํ์ธํด๋ณด์ !
๋๋ ์๋ฐ์ ์ดํด๋ฆฝ์ค๋ฅผ ํตํด ํ์ธํด๋ณด๋ ค๊ณ ํ๋ค.
int d = 8; count[2] = 0; for (int i = 2; i < d; i++) { if (d % i == 0) { count[2]++; if (count[2] >= 1) { break; } } } if (count[2] == 0) { System.out.println(k + " = ์ค์"); } else { System.out.println(k + " = ํฉ์ฑ์"); }
int d = 8; count[2] = 0;
for (int i = 2; i < d; i++) {
if (d % i == 0) {
count[2]++;
if (count[2] >= 1) {
break;
}
}
}
if (count[2] == 0) {
System.out.println(k + " = ์ค์");
} else {
System.out.println(k + " = ํฉ์ฑ์");
}
for ๋ฌธ์ ์ดํด๋ณด๋ฉด i๋ 2๋ถํฐ ์์ํ๋ค. ์ 0 ํน์ 1๋ถํฐ ์์ํ์ง ์๋๋๊ณ ?
์์ ๋งํ๋ ๊ฒ ์ฒ๋ผ ๋ชจ๋ ์ซ์๋ 1๊ณผ ์๊ธฐ ์์ ์ผ๋ก ๋๋์์ ๋ ๋ฌด์กฐ๊ฑด ๋๋จธ์ง ๊ฐ์ด 0์ด๊ธฐ ๋๋ฌธ์ด๋ค!
๊ตณ์ด ํ ํ์์๋ ์ฐ์ฐ์ ์ปดํจํฐ์๊ฒ ์ํฌ ํ์๊ฐ ์๋ค! ๋๋ ค์ง๋๊น!
๊ฐ์ ์ด์ ๋ก i ๊ฐ d ์ ๊ฐ์ ๊ฐ์ด ๋ ๋ ๊น์ง ๋ฐ๋ณตํ์ง ์๋๋ค. ๊ตณ์ด ํ ํ์๊ฐ ์์ผ๋๊น!
๊ทธ๋ฐ ์ด์ ๋ค๋ก ์ ์ฝ๋๋ ์ซ์๊ฐ ํฉ์ฑ์์ธ์ง ํ๋ณํ๋ ์ฝ๋๋ผ๊ณ ํ ์ ์๊ฒ ๋ค.
์, for ๋ฌธ ์์ if ๋ฌธ์ ์ดํด๋ณด๋ฉด, d ์ i ๋ฅผ ๋๋์์ ๋ 0์ผ ๊ฒฝ์ฐ count๋ฅผ +1 ํ๋ผ๊ณ ํ๊ณ ,
๊ทธ ๋ค์ if ๋ฌธ์์๋ ๋ง์ฝ count ์ ๊ฐ์ด 1 ์ด์์ด ๋ ๊ฒฝ์ฐ์๋ for ๋ฌธ์ ๋ฐ๋ณต์ ๋ฉ์ถ๋ผ๊ณ ํ๋ค.
์๋ํ๋ฉด 2 ๋ถํฐ (์๊ธฐ ์์ - 1) ๋งํผ ์ซ์๋ค์ ์ฐ์ฐ ํ์ ๋ 0์ด 1๊ฐ ์ด์ ๋์ค๋ฉด ํฉ์ฑ์์ด๊ธฐ ๋๋ฌธ์ ๊ทธ ์ด์ ์ฐ์ฐํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ์ฝ๋๋ ๋ฌธ์ ์์ด ์ ๋์๊ฐ๋ค. ๋ค๋ง ๋ฌธ์ ์ธ ๊ฒ์ for ๋ฌธ ์์ if ๋ฌธ ์์ if ๋ฌธ์ด ๋ค์ด๊ฐ ์๋ค๋ ๊ฒ์ด๋ค.
if< if <for
๊ทธ๋ ๊ฒ ๋๋ฉด ์ฝ๋๋ฅผ ์ฒ์ ๋ณด๋ ์ฌ๋์ ์ดํดํ๊ธฐ๊น์ง ๊ฝค๋ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด ์ฝ๋๋ฅผ ๊ฐ์ํ ํ ์ ์์๊น?
๋น์ฐํ ๊ฐ๋ฅํ๋ค. ๋ฐ๋ก ๋ฃจํธ๋ฅผ ์ด์ฉํด์ for๋ฌธ์ ์ด์ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ๊ทธ ๋ฃจํธ๋ผ๋๊ฒ ๋ญ๋ฐ?
์ฌ์ค ๋๋ ์์ง ์ ํํ ์ดํดํ์ง ๋ชปํ๋ค. (๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ ๋๋ฌด์ํค)
๋ฃจํธ4 = 2 * 2
๋ฃจํธ9 = 3 * 3
๋ฃจํธ16 = 4 * 4
๋ฃจํธ25 = 5 * 5
์ด๋ ๊ฒ ๋ฃจํธ ์์ ์๋ ์ซ์ x ๋ ์ด๋ค ์ซ์ a ์ ์ ๊ณฑ๊ทผ์ด๋ค.
์ด์ ์์์ ํฉ์ฑ์ ์ฐ์ฐ์ ์์ฉํด๋ณด์.
์์ ๋งํ๋ฏ์ด 8์ ์์๋ก ๋ค๊ฒ ๋ค.
8 / 1 = 8 (0)
8 / 2 = 4 (0)
8 / 3 = 2 (2)
8 / 4 = 2 (0)
8 / 5 = 1 (3)
8 / 6 = 1 (2)
8 / 7 = 1 (1)
8 / 8 = 1 (0)
์ฌ๊ธฐ์ 8์ 2๋ก ๋๋์์ ๋์ 4๋ก ๋๋์์ ๋๋ ๋๋จธ์ง ๊ฐ์ด 0์ด๋ค.
์ฆ, 2 * 4 = 8 ๊ณผ 4 * 2 = 8 ์ด ๊ฐ๋ค๋ ๋ง์ด๋ค. ๊ทธ๋์ 8์ ๊ฒฝ์ฐ 8์ 2๋ก ๋๋ ์ดํ๋ก ์ฐ์ฐ๋๋ ์ซ์๋ฅผ ๋ณผ ํ์๊ฐ ์์ด 8์ ํฉ์ฑ์๋ผ๋ ๋ง์ด ๋๋ค.
๊ทธ๋ ๋ค๋ฉด for ๋ฌธ์ ์ด๋ป๊ฒ ์ด์ํ ์ ์์๊น?
์ง๊ธ๊น์ง for ๋ฌธ์ i ๊ฐ d ๋ณด๋ค ์์ ๊ฒฝ์ฐ์ + 1 ์ฉ ํ๋ฉด์ ๋ฐ๋ณต๋๋ค. ํ์ง๋ง ์์ ์ฝ๋์ ๊ฐ์ ์ด์ ๋ก ๋ง์ฝ ๋ฐ๋ณต ์ค์ 0์ด ํ๋๋ผ๋ ๋์ค๊ฒ ๋๋ฉด ๊ทธ ์๋ ํฉ์ฑ์์ธ ๊ฒ ์ฒ๋ผ, 0์ด ํ๋ฒ์ด๋ผ๋ ๋์จ ์ดํ์ ์ซ์์ ๋ํ ๋๋จธ์ง ์ฐ์ฐ์ ํ์ธ ํ ํ์๋ ์๊ฒ ๋๋๊ฑฐ๋ค.
๊ทธ๋์ ๋ฐ๋ณต์ ๋ฒ์๋ฅผ ๋ฐ์ผ๋ก ์ค์ฌ๋ฒ๋ฆฌ์๋ ์ ์ด๋๋ค.
8์ ์๊ฐํด๋ณด๋ฉด,
i = 2 ; i * i <= 8; i++ ์ ๊ณต์์ผ๋ก ๋ฐ๋ณตํ๋ค๊ณ ํ๋ฉด
i = 2; 2 * 2 <= 8; i++ => ์ฐธ
i = 3; 3 * 3 <=8; i++ => ๊ฑฐ์ง
์ด๋ฏธ 8์ 2๋ก ๋๋จธ์ง ์ฐ์ฐ์ ํ์ ๋ 0์ด ๋์์ผ๋ฉฐ, ๋ฐ๋ณต ๋ฒ์ ๋ํ ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๊ทธ ์ดํ์ ์ซ์์ ๋ํ ์ฐ์ฐ์ ํ์ง ์๊ฒ ๋๋ค.
9๋ฅผ ์์๋ก,
i = 2; 2 * 2 <= 9; i++ => ์ฐธ
i = 3; 3 * 3 <=9; i++ => ์ฐธ
i = 4; 4 * 4 <= 9; i++ => ๊ฑฐ์ง
9๋ 2๋ก ๋๋จธ์ง ์ฐ์ฐ์ ํ์ ๋ 0์ด ์๋๊ณ , 3์ผ๋ก ๋๋จธ์ง ์ฐ์ฐ์ ํ์ ๋ 0์ด ๋์จ๋ค. ๊ทธ๋ฌ๋ฉด ๊ทธ ์ดํ์ ์ซ์๋ค์ ์ฐ์ฐ์ ๋ณผ ํ์๋ ์์ด์ง๊ฒ ๋๋ค.
๊ทธ๋์ ๋ฃจํธ๊ณต์์ ์ด์ฉํด ๋ฐ๋ณต๋ฌธ์ ํ์๋ฅผ ์ค์ฌ๋ฒ๋ฆฌ๋๊ฑฐ๋ค. ์ด ๋ง์ ์ฆ, if ๋ฌธ์ ์ฌ์ฉํด 0 ์ด 1๊ฐ ์ด์ ๋์ฌ ๊ฒฝ์ฐ for๋ฌธ์ ๋ฉ์ถ๋ผ๋ ๋ง๊ณผ ๊ฐ์ ๋ง์ด๋ค.
์์์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ค.
5๋ฅผ ์์๋ก,
i = 2; 2 * 2 <= 5; i++ => ์ฐธ
i = 3; 3 * 3 <=5; i++ => ๊ฑฐ์ง
5๋ฅผ ๋ฐ์ผ๋ก ์ ์์ ๋ 2.xxxxx ๊ฐ ๋์ค๋๋ฐ, ์ด ๋ง์ธ ์ฆ์จ 5 % 2 ์ ๊ฒฐ๊ณผ๊ฐ ์์์ ๊ฒฐ๊ณผ์ด๊ธฐ์ ์ด ์ดํ์ ์ฐ์ฐ์ 5 % 2 ๊ฒฐ๊ณผ๊ฐ๊ณผ ๊ฐ์ผ๋ฏ๋ก 5 % 2 ์ฐ์ฐ ํ๋๋ง์ผ๋ก ์ถฉ๋ถํ ํ๋ณ ๊ฐ๋ฅํ๋ค๋ ๋ง์ด ๋๋ค.
๊ทธ๋ผ ์ด์ ๋ฃจํธ๋ฅผ ์ด์ฉํ ์ฝ๋๋ฅผ ๋ณด์ฌ์ค !
int e = 8; count[3] = 0;
for (int i = 2; i * i <= e; i++) {
if (e % i == 0) {
count[3]++;
}
}
if(count[3] == 0) {
System.out.println(e + " = ์์");
} else {
System.out.println(e + " = ํฉ์ฑ์");
}
์๊น ๋ฃจํธ๋ฅผ ์ฌ์ฉํ์ง ์์ ์ฝ๋์ ๋นํด ์ฝ๋์ ์๊ฐ ํจ์ฌ ์ค์๊ณ ๋ ๊ฐ๊ฒฐํด์ก๋ค.
์ด ์ฝ๋์์ e ์ ์๋ฌด ์ซ์๋ฅผ ๋์ ํ๋ฉด ๊ทธ ์ซ์๊ฐ ์์์ธ์ง ํฉ์ฑ์์ธ์ง ๋ฃจํธ์ ๊ณต์์ ์ด์ฉํด์ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
๋๋์ ์ ?
์ ๋ง ๋ด๊ฐ ์๊ฐ์น๋ ๋ชปํ๋ ์ถ์ ์ฌ๋ฌ๋ถ๋ถ๋ค์ ์ํ์ด ๊ณ ์ค๋ํ ๋ค์ด๊ฐ ์๊ตฌ๋๋ผ๋๊ฑธ ์ฒ์ ํ ๊นจ๋ซ๊ฒ ๋ ๋ ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ์ด์๊ฐ๋ ์ด ๋ชจ๋ ์๊ฐ๋ค์ ๋ ผ๋ฆฌ๋ก์จ ๊ตฌ์ฑ๋์ด ์๋ค๋ ๊ฒ์ ์กฐ๊ธ์ด๋๋ง ์ดํดํ ์ ์๊ฒ ๋ ๊ณ๊ธฐ๊ฐ ๋์๋ค.
์ธ์์๋ '๊ทธ๋ฅ' ์ด๋ผ๋ ๊ฑด ์๋ค. ๋ชจ๋ ๊ฒ์๋ ์ด์ ๊ฐ ์๊ณ , ๊ทธ ์ด์ ๋ก ์ธํด ํ์ฌ์ ๊ฒฐ๊ณผ๊ฐ ์๋ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ์ ์ถ๋ ๊ทธ๋ฌํ ๊ฒ ๊ฐ๋ค. ๋ณธ์ง์ ์์์ผ ๊ทธ ๋ค์์ผ๋ก ๋ ๋ฐ์ ํ ์ ์๋ค. ์ฐ๋ฆฌ๋ ์ง๊ธ๊ป ๊ทธ ์ผ๋ง๋ ๋ณธ์ง์ ๋ฌด์ํ๋ฉฐ ์๋ง ๋ณด๊ณ ๋ฌ๋ ค์๋๊ฐ?
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 5585 | ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, ๊ฑฐ์ค๋ฆ ๋ (0) | 2020.10.18 |
---|---|
๋ฐฑ์ค 7568 | ๋ธ๋ฃจํธ ํฌ์ค ์๊ณ ๋ฆฌ์ฆ, ๋ฉ์น (0) | 2020.10.18 |
๋ฐฑ์ค 1874 | ์คํ ์์ด (0) | 2020.10.16 |
๋ฐฑ์ค 10818 | ์ต์, ์ต๋๊ฐ ๊ตฌํ๊ธฐ (0) | 2020.10.16 |
๋ณ ์ฐ๊ธฐ (0) | 2020.09.29 |