C语言 因式分解

Python010

C语言 因式分解,第1张

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

  

  

unsigned int m=2

unsigned int cnt=1

  

void Factor(int n, char *msg, char printYes)

int main()

{

    char s[100]={0}

    char flag='y'

    printf("------求整数的因式分解------\n请输入正整数m(>1):")

    scanf("%u", &m)

    printf("打印详细分解情况吗?[y|n,回车打印]")

    scanf("%*c%c",&flag)

    if(m<1)

    {

        printf("error input!\n")

        exit(-1)

    }

    if(flag!='n')

        printf("%d =  %d \n", m,m)

    Factor(m, s,flag)

    if(cnt==1)

        printf("\n%d是素数\n",m)

    printf("\n------")

    printf("一共有%d种", cnt)

    printf("------\n")

    return 0

}

  

void Factor(int n, char *msg,char printYes)

{

    char s2[100]={0}//保存当前分解的部分结果

    if(n==1)

        return 

    for(int i=2i<ni++)

    {

        if (n%i==0)

        {

            if(n==m)

                sprintf(msg, "%d = ", m)

            sprintf(s2,"%s %d * ",msg, i)//因式分解部分结果保存在字符串s2中

  

            if(printYes!='n')

                printf("%s %d\n",s2,n/i)//打印结果(包括最后一个因子)

            Factor(n/i,s2,printYes)

            cnt++

        }

    }

}

// 下面是用我在toj 10004上面通过的代码,稍加修改写成的。

#include <stdio.h>

#include <math.h>

int Prime(int x)

{

int n, i

n = (int)sqrt(x)

for (i = 2i <= ni++)

if (x % i == 0) break

if (i >n)

return 1

else

return 0

}

int main()

{

// freopen("2.txt","w",stdout)

int x

int t

int i , n

int y

int first

int max

while (scanf("%d",&max) == 1)

{

for (y = 2y <= maxy++)

{

x = y

if (Prime(x))

{

printf("%d=%d\n",x,x)

}

else

{

printf("%d=",x)

first = 1

do

{

for (i = 2i <= xi++)

{

t = 0n = 0

while (x % i == 0)

{

t = 1

n++

x = x/i

}

if (t)

{

if (first) first = 0

else printf("*")

while (n>1)

{

printf("%d*",i)

n--

}

printf("%d",i)

}

}

} while(x != 1)

printf("\n")

}

}

}

return 0

}