永发信息网

C语言 因式分解

答案:2  悬赏:80  手机版
解决时间 2021-01-24 20:42
  • 提问者网友:孤山下
  • 2021-01-24 06:05
C语言 因式分解
最佳答案
  • 五星知识达人网友:第四晚心情
  • 2021-01-24 06:32
#include 
int first(int n)//函数功能为找到第一个因子。
{
    int r=2;
    while(n%r) r++;
    return r;
}
int main()
{
    int n;
    int a;
    scanf("%d",&n);
    a=first(n);
    printf("%d=%d",n,a);
    n/=a;
    while(n!=1)
    {
        a=first(n);
        printf("*%d", a);
        n/=a;
    }
    printf("
");
    return 0;
}
全部回答
  • 1楼网友:不如潦草
  • 2021-01-24 07:19
#include
#include
#include
  
  
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("------求整数的因式分解------ 请输入正整数m(>1):");
    scanf("%u", &m);
    printf("打印详细分解情况吗?[y|n,回车打印]");
    scanf("%*c%c",&flag);
    if(m<1)
    {
        printf("error input! ");
        exit(-1);
    }
    if(flag!='n')
        printf("%d =  %d  ", m,m);
    Factor(m, s,flag);
    if(cnt==1)
        printf(" %d是素数 ",m);
    printf(" ------");
    printf("一共有%d种", cnt);
    printf("------ ");
    return 0;
}
  
void Factor(int n, char *msg,char printYes)
{
    char s2[100]={0};//保存当前分解的部分结果
    if(n==1)
        return ;
    for(int i=2;i    {
        if (n%i==0)
        {
            if(n==m)
                sprintf(msg, "%d = ", m);
            sprintf(s2,"%s %d * ",msg, i);//因式分解部分结果保存在字符串s2中
  
            if(printYes!='n')
                printf("%s %d ",s2,n/i);//打印结果(包括最后一个因子)
            Factor(n/i,s2,printYes);
            cnt++;
        }
    }
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯