๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
C ์–ธ์–ด/๋ฌธ์ œํ’€์ด

[C์–ธ์–ด]2์™€ 100์‚ฌ์ด์— ์žˆ๋Š” ๋ชจ๋“  ์†Œ์ˆ˜(prime number)๋ฅผ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ : ์‰ฝ๊ฒŒ ํ’€์–ด์“ด C์–ธ์–ด Express 7์žฅ

by IworldT 2021. 10. 12.
๋ฐ˜์‘ํ˜•

์‰ฝ๊ฒŒ ํ’€์–ด์“ด C์–ธ์–ด Express 7์žฅ 7๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž.

 


2์™€ 100์‚ฌ์ด์— ์žˆ๋Š” ๋ชจ๋“  ์†Œ์ˆ˜(prime number)๋ฅผ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ. ์ •์ˆ˜๊ฐ€ ์†Œ์ˆ˜๊ฐ€ ๋˜๋ ค๋ฉด 1๊ณผ ์ž๊ธฐ ์ž์‹ ๋งŒ์„ ์•ฝ์ˆ˜๋กœ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

 

 HINT  : ์†Œ์ˆ˜์˜ ์•ฝ์ˆ˜๋Š” 1๊ณผ ์ž๊ธฐ์ž์‹ ๋ฟ์ด๋‹ค. ๋”ฐ๋ผ์„œ 1๋ถ€ํ„ฐ ์ž๊ธฐ ์ž์‹  ์‚ฌ์ด์— ์•ฝ์ˆ˜๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ๋‹ค๋ฉด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.


๋ฐ˜์‘ํ˜•

 

 

ํ’€์ด

์ด์ „์— boolean์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ๋ฐฐ์› ์—ˆ๋”๋ผ๋ฉด true์™€ false๋ฅผ ์ด์šฉํ•ด๋„ ๋์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ boolean์— ๋Œ€ํ•ด ์•„์ง ๋ฐฐ์šฐ์ง€ ์•Š์•„ stdbool.h ํ—ค๋”ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์„ 1๊ณผ 0์œผ๋กœ ํ•˜์ž.

while(1)์—์„œ๋„ 1์„ ์ž‘์„ฑํ•˜๋ฉด ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋Œ๋“ฏ์ด, ๋ณดํ†ต 1์ด true๋ฅผ ๋œปํ•˜๊ณ  0์ด false๋ฅผ ๋œปํ•œ๋‹ค.

i๋กœ 2๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์ˆซ์ž ํ•˜๋‚˜์”ฉ ๋ชจ๋‘ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํŒ๋‹จํ•  ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์†Œ์ˆ˜๋ฅผ ํŒ๋‹จํ•˜๋ ค๋ฉด ๊ทธ ์ˆซ์ž i๊ฐ€ ์ž๊ธฐ์ž์‹ ๋ณด๋‹ค ์ž‘์€ ์ˆซ์ž๋“ค๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด(๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด) ์•ˆ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด j๊ฐ€ 2๋ถ€ํ„ฐ i๊นŒ์ง€ ๋‚˜๋จธ์ง€์—ฐ์‚ฐ์ž %๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•ด์ค˜์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ๋‚˜๋จธ์ง€์—ฐ์‚ฐ์ž๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฐ’์ด 0์ด๋ฉด ๋‚˜๋ˆ„์–ด๋–จ์–ด์กŒ๋‹ค๋Š” ๋œป์œผ๋กœ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ, ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์˜๋ฏธ์˜ isPrime=0์„ ์ฃผ๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•˜์ž.

๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•˜๋ฉด isPrime์ด 1์ธ์ง€ 0์ธ์ง€๋ฅผ ํŒ๋‹จํ•˜์—ฌ ์ถœ๋ ฅํ• ์ง€๋ง์ง€ ์ •ํ•˜์ž.

 

 

์ฝ”๋“œ

#include <stdio.h> 
int main(void) {

	int i, j, isPrime;

	for (i = 2; i <= 100; i++) {
    	//๊ธฐ๋ณธ์ ์œผ๋กœ ์†Œ์ˆ˜๋ผ๊ณ  ๊ฐ€์ •. ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ ๋•Œ๋งŒ 0์œผ๋กœ ๋ฐ”๊พธ์–ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ
		isPrime = 1;
		for (j = 2; j < i; j++) {
			if (i % j == 0) {
				isPrime = 0;	//์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ
				break;
			}
		}
		if (isPrime == 1) {	//์†Œ์ˆ˜์ผ ๊ฒฝ์šฐ์—๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.
			printf("%d ", i);
		}
	}

	return 0;
}

 

 

์‹คํ–‰๊ฒฐ๊ณผ

 

 

 

์ถ”๊ฐ€ ํ’€์ด

์‚ฌ์‹ค ์†Œ์ˆ˜์ธ์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” j ๋ฐ˜๋ณต๋ฌธ์„ ์ž๊ธฐ์ž์‹ ์ธ i๊นŒ์ง€ ๋Œ๋ ค์ค„ ํ•„์š”๋Š” ์—†๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆซ์ž 15๊ฐ€ ์†Œ์ˆ˜์ธ์ง€๋ฅผ ํŒ๋‹จํ•œ๋‹ค๊ณ  ํ•  ๋•Œ, j=2 ๋ถ€ํ„ฐ ๋ฐ˜๋ณต๋ฌธ์„ ์‹œ์ž‘ํ•  ๊ฒƒ์ด๋‹ค.

15์˜ ์•ฝ์ˆ˜๋Š” 1,3,5,15 ์ธ๋ฐ, 15์˜ ์ ˆ๋ฐ˜์ธ ์•ฝ 7~8 ์ดํ•˜๋กœ๋งŒ ์†Œ์ˆ˜๋ฅผ ํŒ๋‹จํ•ด๋„ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์œ„์™€ ๊ฐ™์ด 15์˜ ์ ˆ๋ฐ˜์„ ๊ธฐ์ค€์œผ๋กœ 7 ์ดํ•˜์— ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์•ฝ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฌด์กฐ๊ฑด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. ๋™์‹œ์—, ์ ˆ๋ฐ˜์ธ 7 ์ดํ•˜์— ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์•ฝ์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด ๋ฌด์กฐ๊ฑด ์†Œ์ˆ˜์ธ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

15์™€ ๊ฐ™์ด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ˆซ์ž๋Š” for ๋ฌธ์„ ์ฑ„ ๋‹ค ๋Œ๊ธฐ๋„ ์ „์ธ j=3์—์„œ break๋กœ ํƒˆ์ถœํ•ด๋ฒ„๋ฆด ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ 101๊ณผ ๊ฐ™์ด ์†Œ์ˆ˜์ธ ์ˆซ์ž๋Š” ์•ฝ์ˆ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ j=100 ๊นŒ์ง€ 100๋ฒˆ์ด๋‚˜ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์€ ์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์ด๋‹ค.

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ, j์˜ ๋ฒ”์œ„๋ฅผ j<i ๊ฐ€ ์•„๋‹Œ, j <= i/2 ๋กœ ์„ค์ •ํ•ด์ฃผ์ž.

 

#include <stdio.h> 
int main(void) {

	int i, j, isPrime;

	for (i = 2; i <= 100; i++) {
		isPrime = 1;
		for (j = 2; j <= i/2; j++) {
			if (i % j == 0) {
				isPrime = 0;
				break;
			}
		}
		if (isPrime == 1) {
			printf("%d ", i);
		}
	}

	return 0;
}

 

์กฐ๊ธˆ ๋” ํšจ์œจ์ด ๋†’์•„์ง„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€