永发信息网

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

答案:4  悬赏:20  手机版
解决时间 2021-11-11 18:34
c++因数分解(次方用^表示)
最佳答案
#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< }
}

}
}

采用递归的方式 ,变量名故意混淆了~自己改下就可以用~
全部回答
#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语言的,希望对你有用
#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

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何确定tip31c三极管引脚B,C,E三端
PS2极品飞车8
为什么满族可以统治清朝近400年呢?
高密一中满分作文2016
华英学校(富裕广场校区)地址在哪,我要去那里
十里香手撕鸭地址在哪,我要去那里办事
1981年美国1分硬币值多少钱
刑事案件中补充侦查什么意思,补充侦查期限多
快贷极速借款名额容易抢到吗
ipone7和7puls哪个好些
风管穿过伸缩缝需要采取什么措施?
哪一个瞬间,让你觉得科比真的老了
大家对深圳罗一笑事件有什么看法
我需要行尸走肉第一季的百度云网盘,最好是1-
泗洪距离成都多少里
推荐资讯
你好,请问,1米挑板阳台,长16.9米,没有挑
九分之四成乘以八分之六怎样计九分之四乘以八
家里的美的空调显示屏乱码了,用遥控器按全程
公积金服务大厅地址在哪,我要去那里办事,
三盅全会是什么意思
家具是现场打的好,还是买成品的家具好
澳大利亚签证获签后准签信从哪里下载,官方没
领酱国酒多少钱,领酱国酒怎么样
银行付了房租发票未开分录怎么做
怎么样辨别控制器是60度还是120度
三个疯字怎么读。
我今天卖衣服,都是认识的,每一个人都少赚了
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?