약수구하는 프로그램

일단 결과물: divisor.exe

교수님이 자유주제로 프로그램 아무거나 만들어보라 하시길래
뭐 만들지 고민하다가 친구한테 물어봤더니 돌아온 답변이 이거.
교수님 보여드린건 이거 말고 다른거지만...

일단 코드
#include<stdio.h>
void main()
{
        int num,quotient,remainder,i;
        printf("숫자입력: ");
        scanf("%d",&num);
        printf("숫자 %d의 약수를 구합니다.\n",num);
        for(i=0;i<num;i++)
        {
                quotient=num/(i+1);
                remainder=num%(i+1);
                if(remainder==0)
                        printf("%d",quotient);
        }
        printf("\n");
}
이게 맨처음 짜본거.
num으로 수를 입력받고 1부터 입력받은 수까지 나눗셈을 시행한다.
그리고 나누어 나머지가 0이 되는 수들을 화면에 출력하는 방식.

이걸 실행하면 약수가 역순으로 나온다.
그러니까 구할 약수에 10넣으면 10 5 2 1 하고 출력되는식.
처음엔 예전에 배웠던 솔트기능을 써서 작은 수 부터 출력하려했다.

그런데 수가 커져서 약수가 (할당된 배열보다) 많아지면 에러크리.
정렬기능 넣는것도 힘들었고...

그냥저냥 방치하다가 오늘 다시 손좀본 코드.
#include<stdio.h>
void main()
{
        int num,quotient,remainder,i;
        printf("숫자입력: ");
        scanf("%d",&num);
        printf("숫자 %d의 약수를 구합니다.\n",num);
        for(i=0;i<num;i++)
        {
                quotient=num/(num-i);
                remainder=num%(num-i);
                if(remainder==0)
                        printf("%d",quotient);
        }
        printf("\n");
}
솔트쓴다고 값 비교를 위해 배열선언도 필요없고
원래코드에서 약간만 손좀 보면 됬던것을....

원래코드에서는 입력받은수를 1부터 나누어가는 방식이라 몫이 큰수부터 표현이 되던것.
그래서 이번엔 입력받은수로 나누고 그 수에서 1씩빼가며 나누는 방식.
그 결과 이젠 작은 수 부터 차례로 화면에 출력된다.

by Kyle | 2008/08/29 18:45 | C Language | 트랙백 | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶