每个整数都可以分解成几个素数的乘积

来源:百度知道 编辑:UC知道 时间:2024/06/10 23:43:06
用C语言编写一个程序,就是输入一个整数后就可以输出是哪几个素数的乘积。

思想是把这个整数分成任何两个因数的乘积,因数又可以再分,直到得到的所有因数全是素数。

#include <stdio.h>
#include <stdlib.h>

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*/