不多说,直接看代码:
#include
#include
#include
#include
typedef struct yinshu{
unsigned int yz;
struct yinshu *next;
}YSNode,*YinShu; //定义链表节点类型YSNode,和指针YinShu
void InsertNode(unsigned int n, YinShu &L){
//在L链表的第一个节点之后插入一个节点,值为n
YinShu p;
p=(YinShu)malloc(sizeof(YSNode)); //分配节点空间
p->yz=n;
p->next=L->next;
L->next=p;
}
void YinShuFenJie(unsigned int n,YinShu &L){
//对n进行质因数分解,并存在链表L中
unsigned int j,k;
k=(unsigned int)sqrt(n);
for(j=2;j<=k;++j){
if(n%j==0){ //遇到一个质因数j
InsertNode(j,L);
n/=j;
k=(unsigned int)sqrt(n);
--j;
}
}
InsertNode(n,L); //插入剩下的质因数n
}
int main(){
unsigned int n;
YinShu L,p,q;
scanf("%d",&n);
L=(YinShu)malloc(sizeof(YSNode));
L->yz=n;
L->next=NULL;//第一个节点存放n的值
YinShuFenJie(n,L);
p=L->next; q=p->next;
printf("%u=%u",L->yz,p->yz);
free(L); free(p); //释放第一、二个节点
while(q){
p=q;
printf("*%u",p->yz);
q=p->next;
free(p);
}
printf("\nFinished.\n");
getch();
return 0;
}
希望能帮到你!