알고리즘

소수(Prime number) 찾기 문제

chadongmin 2022. 4. 10. 23:52

소수의 정의란?

소수(素數, [소쑤])는 수학에서 1과 그수 자신 이외의 자연수로는 나눌 수 없는, 1보다 큰 자연수이다. 

 

소수를 찾기위해, RAPTOR를 이용하여 Flowchart 를 만들어보았다.

 

RAPTOR 순서도

먼저 자연수 하나를 입력으로 받고 , 2부터 1씩 증가시키면서 나눈다.

1부터 시작하지 않는 이유는 1로 나누면 몫이 자기 자신이기 때문에 2부터 시작해서 1씩 증가시킨다.

그래서 나누어지는 수를 넘지 않을 때 까지 for문 loop를 돌린다.

 

연산을 한 뒤, 나머지가 0이 된다면 소수가 아닌 것이다. (ex. 9 % 3 의 나머지는 0, 9는 소수가 아님)

 

그래서 나머지를 result라는 변수에 담고 if문을 사용하여 result가 0이 된다면 not_prime_number에 1을 할당한다. (not_prime_number 변수는 0으로 초기화 한 상태)

 

그리고, not_prime_number 변수 값이 1이라면 소수가 아닌것이고 0이라면 소수인 것이다.

 

사실 if문에서 else 는 사용하지 않아도 됐는데, RAPTOR에서 화살표가 두 갈래로 나눠지기 때문에 작성을 했었것 같다. 쓸 필요가 없는 구문이었다. 이렇게 flowchart를 잘못 만들면 코드도 잘못 작성되기 때문에 더욱 주의해야 할 것 같다. 

(교수님도 지적하신 부분)

 

 

작성한 코드이다. 마찬가지로 else문은 필요가 없다.