每个整数都可以分解成几个素数的乘积
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 10:35:04
每个整数都可以分解成几个素数的乘积
用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);
}
}
#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);
}
}
每个整数都可以分解成几个素数的乘积
c++对于输入的整数n,将其分解成若干个素数的乘积.
哪些两位数能分解成3个素数的乘积?!
把11分解成几个自然数的的和,再求出这几个数的乘积,如何分解可以使乘积最大
求问一道关于数轮的问题,算术基本定理证明每个大于1的正整数都可以写成素数的乘积,
有一个整数N,N可以分解成若干个整数之和,问如何分解能使这些数的乘积最大.(c语言)
那些两位数能分解成三个不同素数的乘积,请全部列举
哪些两位数能分解成三个素数的乘积?请将他们全部例举出来(可重复)
什么是分解成两个整数系数的一次因式的乘积?
易语言如何将一个整数分解成若干个两个数的乘积?
在1-100之间,若存在整数n,使X^2+X-n能分解两个整数系数一次式的乘积,这样的n有几个
验证哥德巴赫猜想,一个大于4的偶数,可以分解成两个素数之和,要求判断素数用函数实现