먼저 test 라는 함수를 만든 후 입력받은 숫자 n으로 d(n)을 만드는 알고리즘을 짠다. 그런다음 a배열을 생성해 1 ~ 10000까지의 수를 이 함수에 대입하여 본다. 각 숫자들의 d(n)은 result 변수에 담고, result 변수에 담긴 수가 10000 이하라면 a[] 배열의 result 번째 숫자가 1이 되도록 한다. a[result] 의 결과가 1이라면 a배열의 result 번째 수는 생성자가 있는 숫자가 되고 a[result] 의 결과가 0이라면 a배열의 result 번째 수는 생성자가 없는 셀프 넘버가 된다. 따라서 이 a 배열에서 값이 0인 모든 배열 넘버를 출력하면 각 배열 넘버가 셀프 넘버가 된다.