Develop

[c] 약수/최대공약수/완전수 알고리즘

by hooni posted Apr 23, 2003
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
# 약수 구하는 알고리즘..
#include<stdio.h>

void main()
{
    int i, j, n, m;

    scanf("%d", &n);
    for(i=1 ; i         j = n / i;
        m = j * i;
        if( !(n-m) ) printf("%d ", i);
    }
}


# 최대 공약수 구하는 알고리즘 (유클릿 알고리즘)
#include<stdio.h>

int gcd(int m, int n)
{
    if (m<=0) return 0;
    if (n<=0) return 0;
    while(m != n){
        if (m>n) m = m - n;
        else n = n - m;
    }
    return n;
}

void main()
{
    int a,b;

    printf("Enter a first Number : ");
    scanf("%d",&a);

    printf("Enter a second Number : ");
    scanf("%d",&b);

    printf("GCD is %d",gcd(a,b));
    getch();
}


# 완전수 구하는 알고리즘
완전수란 자신을 제외한 약수의 합과 같은 양의 정수를 말한다.
#include<stdio.h>

void main()
{
    int i, j, n, m, sum;

    for(n=0; n<500; n++)
    {
        sum=0;
        for(i=1 ; i             j = n / i;
            m = j * i;
            if( !(n-m) ){
                //printf("%d ", i);
                sum+=i;
            }
        }

        if(n==sum) printf("n%d is Perfact!n", n);
        //else printf("n%d is Not! (%d!=%d)n", n, sum, n);
    }
}