목표는 이렇게 만드는 것이다.
코드는 다음과 같다.
#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;
}
C 언어 예제, 줄 세우기 & 순위매기기 -2. 동점자 처리 (0) | 2013.09.01 |
---|---|
C 언어 예제, 줄 세우기 & 순위 매기기 - 1 (3) | 2013.08.30 |
C 언어 예제, 소인수분해 하기 (1) | 2013.08.15 |
C 언어 예제, 순서쌍 a,b,c 구하기 (0) | 2013.08.14 |
C 언어 예제, 임의의 수 까지의 곱 (0) | 2013.08.14 |
댓글 영역