永发信息网

c++因数分解(次方用^表示)

答案:4  悬赏:20  手机版
解决时间 2021-11-11 18:34
  • 提问者网友:且恨且铭记
  • 2021-11-10 23:54
c++因数分解(次方用^表示)
最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-11-11 00:09
#include
#include

void wuliao(int count, std::vector & haoxiangshuijiao) {
if(count <3)
{
return;
}
for(int i=2 ;i {
if( count %i ==0)
{
haoxiangshuijiao.push_back(i);
wuliao(count/i ,haoxiangshuijiao);
return;
}

}
haoxiangshuijiao.push_back(count);
return;
}

int main()
{
std::vector chitaiduole;
int buxihuanni;
std::cin>>buxihuanni ;
wuliao(buxihuanni ,chitaiduole);
int chibaochengle=0;
int woainiya=0;
for(std::vector::iterator dantengme = chitaiduole.begin() ; dantengme!=chitaiduole.end() ; ++dantengme)
{
if (dantengme ==chitaiduole.begin() )
{
chibaochengle=*dantengme;
woainiya=1;
continue;
}
if( *dantengme ==chibaochengle)
{
++woainiya;
if(dantengme ==chitaiduole.end()-1)
{
std::cout< }
}
if ( *dantengme !=chibaochengle )
{
if(woainiya==1)
{
std::cout< chibaochengle=*dantengme;
woainiya=1;
}
if (woainiya>1)
{
std::cout< chibaochengle=*dantengme;
woainiya=1;
}
if(dantengme==chitaiduole.end()-1)
{
std::cout<<*dantengme< }
}

}
}

采用递归的方式 ,变量名故意混淆了~自己改下就可以用~
全部回答
  • 1楼网友:忘川信使
  • 2021-11-11 02:29
#include "stdio.h"
main()
{
int n,i,c=0,m,k=0;
scanf("%d",&n);
m=n;
for(i=2;i<=n;i++)
{
c=0;
while(m%i==0)
{
c++;
m=m/i;
}
if(c==1)
{
if(k!=0)
printf("*");
printf("%d",i);
k++;
}
if (c>1)
{
if(k!=0)
printf("*");
printf("%d^%d",i,c);
k++;
}
}
printf("\n");
}
c++我忘了,给你一个c语言的,希望对你有用
  • 2楼网友:过活
  • 2021-11-11 00:56
#include
int s=0;
int fenjie(int &x)
{
    int i;
    for(i=2;i    {
        if(x%i==0)
        {
            x/=i;
            return i;
        }
    }
    //最后一个因子就是剩下的不能分解的数
    i=x;
    x=1;
    return i;
}
int exsi(int x,int a[][2])
{
    int i;
    for(i=0;i    {
        if(x==a[i][0])
        {
            a[i][1]++;//存在,指数+1
            return 0;
        }
    }
    return 1;//不存在返回1
}
int main()
{
    int m,n,i;
    int a[50][2];
    printf("输入:");
    scanf("%d",&m);
    while(m>1)
    {
        n = fenjie(m);
        //不存在,放进结果数组a
        if(exsi(n,a))
        {
            a[s][0]=n;
            a[s++][1] = 0;
        }
    }
    printf("%d",a[0][0]);
    if(a[0][1])
        printf("^%d",a[0][1]+1);
    for(i=1;i    {
        if(i!=0)
        printf("*");
        printf("%d",a[i][0]);
        if(a[i][1])
            printf("%^%d",a[i][1]+1);
    }
    printf(" ");
    return 0;
}

自己敲的,难免发生小问题,如果有错误,还请告知!


2013 5 23 14:27


1L

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯