2015년 7월 30일 목요일

SumPrime Algorithm(서로 다른 두수 사이의 소수들의 합)

서로다른 두 자연수 사이의 '소수'들의 합을 구하는 알고리즘이다.

위와 같이 두수 2와 11을 입력하면


그 두수들(2와 11)사이의 소수들(2,3,5,7,11)의 합 (28)이 출력되는 알고리즘이다. 


1. 선행지식

1) 소수를 구한다.
 
   소수들의 합을 구하려면 먼저 그 소수들을 찾아야한다.

   그 소수들을 찾는다면 그 합을 구하는 것은 어렵지 않을것 이다.



2. 처리과정

1)두 수를 입력 받는다.

2)두 수 사이의 소수를 찾는다.

3)'2)'의 과정에서 찾은 소수들을 더한다.


그렇다면 먼저 어떤 수가 소수인지 어떻게 알것인가?

일단 소수(prime)란 어떤수를 자기자신 보다 낮은 수부터 차례대로 하나씩 나눴을때

나머지가 '0'  즉, 나눠지는 수가,  1과 자기 자신 밖에 없는 수를 말한다.

컴퓨터로 구현할때는 count라는 변수를 선언해서.  어떤 value 값을 1부터 자기자신(value)

까지의 값으로 나눴을때 나머지가 0인수(약수)가(value%i ==0) 있을 때 마다 count 를 늘려

준다.

그과정이 끝나고 count를 확인해 봤을 때 count값이 2라면 그 뜻은 나머지가 0인 값(약수)

이 자기자신과 1밖에 없다는 의미이고, 그말은 count=2인 값(value)은 소수라는 걸 알 수있

다.

코드를 보면 이해하기 쉽다.


  위의 함수는 받은 인자의 값이 소수인지 아닌지 판별 하는 함수 코드이다.

소수를 판별 하는 함수를 만들었을때 나머지 과정은 어렵지 않았다.


위 Calculate 함수를 보면 알수 있듯이 작은수(num1)부터 큰수(num2)사이까지의

수들을 하나씩 소수판별하면서 그값이 소수일 경우 SUM 에  계속 더해주기만 하면된다.

이렇게 어렵지않게 두수 사이의 소수들을 알고  그 수들을 합하는 프로그램을 만들어 보았

다. 이 과정에서 BOOL 이라는 용어를 정의하고 함수로 쓰는것, 삼항연산자로 결과값을 반

환해주는 것 등등 여러가지 기술을 익힐수 있엇다.

다음 c파일을 다운받아서 컴파일 해보면 알기 쉽다.

main.c

댓글 1개: