소수 찾기는 기본 알고리즘을 공부할 때, 자주 접했던 문제이다. 사용자에게 개수를 입력받고 다음줄에 개수만큼 숫자들을 차례로 입력한다. 그 숫자들이 소수인지 소수가 아닌지 판별하기 위해서는 그 숫자를 2부터 그 숫자까지로 나눠봐야 알 수 있다. 그런데, 예를 들어 21 이라는 숫자를 가정해보자. 21의 약수는 1,3,7,21 이다. 지금의 경우에야 21을 3으로 나누면 나누어 떨어지므로 반복문을 돌 때 break 구문을 만나 탈출 할 것이다. 다른 문제에서는 이 숫자를 굳이 21까지 나눌 필요는 없다는 뜻이다. 어차피 약수는 서로 양끝의 숫자들이 차례로 쌍을 이루어 곱한 값이 그 수를 이룬다. 그렇다면, 해당 숫자의 제곱근 까지만 반복문을 돌아도 상관없어지게 된다. 이런 알고리즘은 약수의 개수가 몇 개인..