分解质因数C程序

每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。

现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。

提示:可以用一个函数来判断某数是否是素数。

代码段:

#include<stdio.h>

int prime(int a) //判断是否为素数 
{
    int i;
    int isprime = 0;

    if(a == 2) isprime = 1;//下面的判断程序不包含2,故单独列出 

    for(i=2;i<a;i++)
    {
        if(a%i == 0)
        {
            isprime = 0;
            break;
        }
        else 
        {
            isprime = 1;
        }
    }

    return isprime;
}

int main()
{
    int num;
    int i;

    scanf("%d",&num);
    printf("%d=",num);


    if(prime(num)) 
    {
        printf("%d",num);
    }
    else
    {
        do
        {
            for(i=2;i<=num;i++)
            {
                if(prime(i) && ((num%i) == 0))//判断是否为num的质因数 
                {
                    printf("%d",i);
                    num = num / i;
                    if(num != 1)//判断是否为最后一个质因数,最后一个质因数不带乘号 
                    {
                        printf("x");
                        i = i - 1;//由于质因数也可以重复,所以当不是最后一个质因数时,将i赋值为i-1再次判断这个i是否还能作为质因数 
                    }           
                }
            }
        }while(num != 1);

    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41979297/article/details/81241288
今日推荐