每个整数都可以分解成几个素数的乘积用C语言编写一个程序,就是输入一个整数后就可以输出是哪几个素数的乘积.
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/31 16:21:08
![每个整数都可以分解成几个素数的乘积用C语言编写一个程序,就是输入一个整数后就可以输出是哪几个素数的乘积.](/uploads/image/z/5445270-54-0.jpg?t=%E6%AF%8F%E4%B8%AA%E6%95%B4%E6%95%B0%E9%83%BD%E5%8F%AF%E4%BB%A5%E5%88%86%E8%A7%A3%E6%88%90%E5%87%A0%E4%B8%AA%E7%B4%A0%E6%95%B0%E7%9A%84%E4%B9%98%E7%A7%AF%E7%94%A8C%E8%AF%AD%E8%A8%80%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E7%A8%8B%E5%BA%8F%2C%E5%B0%B1%E6%98%AF%E8%BE%93%E5%85%A5%E4%B8%80%E4%B8%AA%E6%95%B4%E6%95%B0%E5%90%8E%E5%B0%B1%E5%8F%AF%E4%BB%A5%E8%BE%93%E5%87%BA%E6%98%AF%E5%93%AA%E5%87%A0%E4%B8%AA%E7%B4%A0%E6%95%B0%E7%9A%84%E4%B9%98%E7%A7%AF.)
每个整数都可以分解成几个素数的乘积用C语言编写一个程序,就是输入一个整数后就可以输出是哪几个素数的乘积.
每个整数都可以分解成几个素数的乘积
用C语言编写一个程序,就是输入一个整数后就可以输出是哪几个素数的乘积.
每个整数都可以分解成几个素数的乘积用C语言编写一个程序,就是输入一个整数后就可以输出是哪几个素数的乘积.
思想是把这个整数分成任何两个因数的乘积,因数又可以再分,直到得到的所有因数全是素数.
#include
#include
typedef struct factor{
int factor;
struct factor *factor_L,*factor_R;
}factor,*factorp;
/*采用二叉树结构来存放因子*/
int main(int args,char *argv[]){
int Aninterger;
factorp FactorC(int this_factor);
void showfactor(factorp root);
factorp Root;
printf("Please input an interger:"); scanf("%d",&Aninterger);
Root=FactorC(Aninterger); /*分解因数*/
printf("%d=1",Aninterger);
showfactor(Root); /*显示所有的素数因数*/
return 0;
}
factorp FactorC(int this_factor){
factorp root;
int i,tmp;
root=(factorp)malloc(sizeof(factor));
root->factor=this_factor;
root->factor_L=NULL;
root->factor_R=NULL;
if(this_factor==2)return root;
for(i=(int)(1+this_factor/2);i>2;i--){
/*从整数的一半开始寻找因数,因为最小的因数是2*/
tmp=this_factor%i;
if(tmp==0){ /*如果分解成功就递归调用这个函数继续分解因数一直到不能再分解*/
root->factor_L=FactorC(i);
root->factor_R=FactorC(this_factor/i);
break;
}
}
return root;
}
void showfactor(factorp root){
/*找到树的末端显示就好了*/
if(root->factor_L==NULL)
printf("*%d",root->factor);
else{
showfactor(root->factor_L);
showfactor(root->factor_R);
}
}