
关于整数因子分解问题,如何用C++,递归来实现输出所有的情况(不是种数)? 20
关于整数因子分解问题:例如,当n=12时,要求输出:12=12;12=6*2;12=4*3;12=3*4;12=3*2*2;12=2*6;12=2*3*2;12=2*2*...
关于整数因子分解问题:
例如,当n=12 时,要求输出 :
12=12 ;
12=6*2 ;
12=4*3 ;
12=3*4 ;
12=3*2*2 ;
12=2*6 ;
12=2*3*2 ;
12=2*2*3 。
跪谢~~ 展开
例如,当n=12 时,要求输出 :
12=12 ;
12=6*2 ;
12=4*3 ;
12=3*4 ;
12=3*2*2 ;
12=2*6 ;
12=2*3*2 ;
12=2*2*3 。
跪谢~~ 展开
4个回答
展开全部
题目有些难度,我先简单提醒下你,一会把完善答案再代码写出来
①发现因子是逐渐减小的
②举例30=5*3*2,30%5==0,应该明白左边这个式子吧!30能被5整除,另外30/5等于6,而
6%3==0,6/3等于2,2%2==0,2/2等于1,也就是说用取余使得余数(假设为a)为0,然后
原数n运算n/=a,然后再取余知道n/=a之后n==0则退出循环
说的不是很明白,一会儿看代码吧,马上写出来
①发现因子是逐渐减小的
②举例30=5*3*2,30%5==0,应该明白左边这个式子吧!30能被5整除,另外30/5等于6,而
6%3==0,6/3等于2,2%2==0,2/2等于1,也就是说用取余使得余数(假设为a)为0,然后
原数n运算n/=a,然后再取余知道n/=a之后n==0则退出循环
说的不是很明白,一会儿看代码吧,马上写出来
追问
等你哦~~
追答
我想了想,确实有难度
对于小点的数还好,大的数就无奈了
尝试自己编写函数,也尝试了for嵌套好几层
比如60
60=60
60=30*2
60=15*4
60=15*2*2
60=10*6
60=10*3*2
60=10*2*3
60=5*4*3
60=5*3*4
60=5*3*2*2
……
我再好好想想,写出来给你发,留个邮箱或QQ
如果你有了答案,也发给我哦
tencent_company@163.com
展开全部
看似简单呀,想了想也比较复杂呀。 没写完,不写了
void ys(int iSource, int iyz)
{
if (iSource == iyz)
printf("%d=%d\r\n", &iSource, &iSource);
bool yz = false;
for (int i = 2; i <= iyz / 2 1;i++)
{
if (iyz % i == 0)
{
yz = true;
if (iSource == iyz)
printf("%d=%d*%d\r\n", &iSource, &i, &(iyz / i));
else
printf("%d*%d", &i, &(iyz / i));
}
}
}
void ys(int iSource, int iyz)
{
if (iSource == iyz)
printf("%d=%d\r\n", &iSource, &iSource);
bool yz = false;
for (int i = 2; i <= iyz / 2 1;i++)
{
if (iyz % i == 0)
{
yz = true;
if (iSource == iyz)
printf("%d=%d*%d\r\n", &iSource, &i, &(iyz / i));
else
printf("%d*%d", &i, &(iyz / i));
}
}
}
追问
难就难在输出....各种迷茫啊~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int GetFactorSplitSum(int n, char* prestr)
{
if(n == 1)
{
cout<<prestr<<endl;
return 1;
}
int sum = 0;
for(int i = n; i >= 2; i--)
if(n % i == 0)
{
char str[100];
sprintf(str,"%s*%d",prestr,i);
sum += GetFactorSplitSum(n / i, str);
}
return sum;
}
int main()
{
char str[100]={0};
cout<<GetFactorSplitSum(12,str)<<endl;
return 1;
}
{
if(n == 1)
{
cout<<prestr<<endl;
return 1;
}
int sum = 0;
for(int i = n; i >= 2; i--)
if(n % i == 0)
{
char str[100];
sprintf(str,"%s*%d",prestr,i);
sum += GetFactorSplitSum(n / i, str);
}
return sum;
}
int main()
{
char str[100]={0};
cout<<GetFactorSplitSum(12,str)<<endl;
return 1;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
223 跟 322 ,232有什么区别的,这是什么要求啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询