분해질인수---스스로 다듬은 물문제 하나!!!

3265 단어
이 문제는 학우들이 생각하여 나에게 물어본 것이다. 구체적인 문제는 찾아본 적이 없다. 뜻은 사실 매우 간단하다. 바로 하나의 수를 입력하고 그 분해 상황을 출력하는 것이다. 예를 들어 50을 입력하면 결과는 50=2x5x5이다.입력 77, 출력 77 = 7 x 11;이 문제는 내가 먼저 주함수에서 뒤집어엎으려고 했지만 비교적 간단한 방법이 있다는 것을 발견했다. 바로 귀속으로 하고 귀속함수를 만들어서 하나의 수를 세는 출력을 실현하는 것이다. 귀속의 끝은 반드시 마지막을 질수로 하는 수이다. 첫 번째 수를 주함수에서 단독으로 출력하여 제어 형식으로 하는 것을 기억하고 입력을 1로 하는 것을 토론하는 것을 기억하라!구체적인 코드는 아래와 같습니다. 보십시오. 더 좋은 방법이 교류를 지도할 수 있기를 바랍니다!!!
#include <stdio.h>

#include <math.h>

int 
Judgeprime(int x)
{
    int i;
    for (i=2;i<=sqrt(x);i++)
    {
        if (x%i==0)
        {
            return 0;
        }
    }
    return 1;
}

void 
Judge(int m)
{
    int j,n,q;
    if(Judgeprime(m)==1)
    {
        printf(" x %d",m);
        return ;
    }
    for (j=2;j<=m;j++)
    {
        n=m%j;
        if(n==0)
        {
            q=m/j;
            printf(" x %d",j);
            Judge(q);
            break;
        }
    }

}

int main()
{
    int i,d,n,p;
    scanf("%d",&n);
    printf("%d = ",n);
    if(n==1)
    {
        printf("1");
    }
    for(i=2;i<=n;i++)
    {

        if(Judgeprime(n)==1)
        {
            printf("1 x %d",n);
            break; 
        }
        d=n%i;
        if(d==0)
        {
            p=n/i;
            printf("%d",i);
            Judge(p);
            break;  
        }
    }
    return 0;

}


단지 개인의 관점을 대표할 뿐, 싫으면 내뱉지 말고, 평론을 환영합니다!

좋은 웹페이지 즐겨찾기