상세 컨텐츠

본문 제목

C 언어 예제, 소수 찾기

컴퓨터 관련/C 언어 예제

by 열정과 함께 2013. 8. 30. 02:07

본문

목표는 이렇게 만드는 것이다.





코드는 다음과 같다.


#include <stdio.h>

/* 소수를 찾는 프로그램입니다. */

int main()

{

int i,j,l,k=0;

printf("몇 이하의 소수를 찾으시겠습니까?\n");

scanf("%d", &j);

printf("%d 미만의 소수는 다음과 같습니다. \n", j);

for(l=2;l<j;l++)

{

for(i=1;i<l;i++) 

{

if(l % i == 0)

{

k= k+1;

}

}

if(k == 1)

{

printf("%d \n", l);

}

k=0;

}

return 0;

}


설명하면, 다음과 같다.


#include <stdio.h>

/* 소수를 찾는 프로그램입니다. */

int main()

{

int i,j,l,k=0;

printf("몇 이하의 소수를 찾으시겠습니까?\n");

scanf("%d", &j);

printf("%d 미만의 소수는 다음과 같습니다. \n", j);

for(l=2;l<j;l++) /* 1 부터 찾을 필요는 없다. 1은 소수가 아니니까. l 이 소수인지 알아보고, 소수라면 printf 하면 되는 것이다. */

{

for(i=1;i<l;i++) 

{

if(l % i == 0)

{

k= k+1;

}

}

/* 소수는 1과 자기 자신으로만 나누어진다. 그러니, i = 1 일때 한번 나누어 떨어지고, 그 이후로는 나누어떨어지는 적이 없어야 한다. 나누어 떨어지는 수가 있다면, k 에 계속 1씩 추가된다. 1은 기본적으로 나누어떨어지므로, 일단 모든 수에서 k 는 최소한 1 이다. 그리고 1 외에 다른 약수가 있다면, k 는 계속 커지게 된다. */

if(k == 1)

{

printf("%d \n", l);

}

k=0;

/* 다 끝나고 나면, 위의 연산이 다른 l 값에서도 계속해서 반복될 수 있게, k 에 다시 0 을 반환해 준다. */

}

return 0;

}




관련글 더보기

댓글 영역