/*
将一个整数写成几个质因数的连乘积,如: 输入36,则程序输出36=2*2*3*3 。
1.程序分析,
比如12=2*2*3
找到12最小的质因数,2,然后递归 12/2=6 将6 放进去,6=2*3 同理 2是最小的质因数,剩下的
*/
#include"stdio.h"
#include<iostream>
using namespace std;
void resverse(int n)
{
if(n==2||n==3) //判出条件暂时设置为2或者3
{
printf("最后一个数是%d",n);
}
int i,k;
for(i=2;i<n;i++)
{ !!!!!!!!!!!!!! 递归的两个重点 第一个是回归条件 第二个是递归完之后呢
if(n%i==0)
{
// printf("%d %d",n,i)
k=n/i;
printf("%d",i);
resverse(k);
break;
}
}
}
int main()
{
int n;
//scanf("%d",n); //备注 在这里用scanf就不可以,调试之后就会死循环 ???? 明天过来解决,感冒快死了
//用cin 就可以 不报错
cin >> n;
resverse(n);
system("pause");
}
关于递归部分比较重要的两个点 一个是回归条件 第二个是递归完毕之后的事情
我这里有两个问题, 因为还在测试阶段, 这里的回归条件明天过来改
哎呀 SBSB了 地制符没有加
scanf("%d",&n); 这样就对了
/*
将一个整数写成几个质因数的连乘积,如: 输入36,则程序输出36=2*2*3*3 。
1.程序分析,
比如12=2*2*3
找到12最小的质因数,2,然后递归 12/2=6 将6 放进去,6=2*3 同理 2是最小的质因数,剩下的
*/
#include"stdio.h"
#include<iostream>
using namespace std;
void resverse(int n)
{
/*
if(n==2||n==3) //判出条件暂时设置为2或者3
{
printf("最后一个数是%d",n);
}
*/
int i,k;
int count=0;
for(i=2;i<=n;i++)
{
if(n%i==0)
{
count++;
}
}
if(count==1)
{
printf("最后一个数是%d",n); //判出条件改为是不是质数
}
for(i=2;i<n;i++)
{ !!!!!!!!!!!!!! 递归的两个重点 第一个是回归条件 第二个是递归完之后呢
if(n%i==0)
{
// printf("%d %d",n,i)
k=n/i;
printf("%d",i);
resverse(k);
break;
}
}
}
int main()
{
int n;
scanf("%d",&n); //备注 在这里用scanf就不可以,调试之后就会死循环
//用cin 就可以 不报错
//cin >> n;
//scanf("%s%d",s,&n)!=EOF
resverse(n);
system("pause");
}