관리 메뉴

사적공간

약수 구하기 본문

자격증/정보처리기사_실기

약수 구하기

2sac 2024. 4. 3. 19:57

 

#include<stdio.h> 
void main() 
{
    int b, mok, nmg, i; //입력받을 약수변수 b, 몫 mok, 나머지 nmg, 인쇄할 for문 첨자 i
    int a[100]; // 약수를 저장할 배열 a[100]
    printf("약수를 찾을 값을 입력하시오:");
    scanf("%d", &b); //b에 정수값을 입력받음. 
    int c = 0, d = -1; // c는 제수, d는 약수가 들어갈 배열의 증가할 첨자 
    while(1)
    {
        c++; // c는 0에서 1로 증가, 1부터 나눠줌 
        if(c <= b) // 1 이상 입력받은 수 이하  
        {
            mok = b / c; // 몫 구함 
            nmg = b - mok * c; // 나머지 구함 
            if(nmg == 0) // 나머지가 0이면 그 회차의 c는 b의 약수 
            {
                d++; // 첨자를 -1 에서 0으로 증가
                a[d]=c; // 나머지를 0으로 만드는 제수(약수)를 저장 
            }
        }
        else
        {
            printf("%d의 약수는", b);
            for (i = 0; i <= d; i++)
                printf("%d ", a[i]);  // 저장된 약수배열을 출력함 
            break;
        }
     
    }
    printf("이다.");
}

약수를 찾을 값을 입력하시오:34
34의 약수는1 2 17 34 이다.