c语言-分解质因数程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
xz=xz/zys[i];
if(j==0)
printf("%d=%d",xz1,zys[i]);
else
printf("x%d",zys[i]);
j++;
}
i++;
}
if(j==1)
printf("\n此数为质数\n");
if(j>0) fh=1;
else fh=0;
return(fh);
}
}
void sczys()
{
FILE *p;
int i=7,j,k=3,m=0,n;
int zys[100]={0};
zys[0]=2;zys[1]=3;zys[2]=5;//填入最小的三个质数
if((p=fopen("质因数","wb"))==NULL)
{
printf("创建文件失败\n");
exit(0);
}
while(i<500)
{
m=0;
n=i-1;
j=2;
while(j<i)//判断i是否为质数——用i分别除以i一下的所有数,如果都不能整除则i为质数
{
if(i%j==0)m=1;//如果能被某数整除则对m写1
if(j==n)//在第i-1次循环判断m的值,0则i为质数
{
if(m==0)
{
zys[k]=i;
fread(&k,sizeof(k),1,p);
fread(zys,sizeof(k),k,p);//将质数从文件读入数组
fclose(p);
scanf("%d",&xz);
xz1=xz;
while(zys[i]<=xz)
{
while(xz%zys[i]==0)//判断输入数能否被此质数整除,如果能整除就用整除后的数再除以这个质数,直到这个数不能被任何质数整除为止
#include<stdio.h>
int main()
{
fenjie();
}
int fenjie()
{
void sczys();//求出1到500的所以质数,并输出到文件保存
int fjzys(FILE *p);//通过质数分解质因数
FILE *pj;
printf("本程序功能——分解质Biblioteka Baidu数\n输入一个正整数:\n");
back:if((pj=fopen("质因数","rb"))==NULL)//打开质数文件,如果没有则求质数并输出到文件
{
sczys();
goto back;//文件创建之后重新打开
}
else
{
fjzys(pj);//将文件作为参数代入函数
printf("\n");
goto back;
}
return 0;
k++;
}
}
j++;
}
i++;
}
fwrite(&k,sizeof(i),1,p);//k为质数的个数——在文件的开始存储质数的个数,为读取准备
fwrite(zys,sizeof(i),k,p);
fclose(p);
}
int fjzys(FILE *p)
{
int xz,xz1,i=0,j=0,k,fh,zys[100]={0};
xz=xz/zys[i];
if(j==0)
printf("%d=%d",xz1,zys[i]);
else
printf("x%d",zys[i]);
j++;
}
i++;
}
if(j==1)
printf("\n此数为质数\n");
if(j>0) fh=1;
else fh=0;
return(fh);
}
}
void sczys()
{
FILE *p;
int i=7,j,k=3,m=0,n;
int zys[100]={0};
zys[0]=2;zys[1]=3;zys[2]=5;//填入最小的三个质数
if((p=fopen("质因数","wb"))==NULL)
{
printf("创建文件失败\n");
exit(0);
}
while(i<500)
{
m=0;
n=i-1;
j=2;
while(j<i)//判断i是否为质数——用i分别除以i一下的所有数,如果都不能整除则i为质数
{
if(i%j==0)m=1;//如果能被某数整除则对m写1
if(j==n)//在第i-1次循环判断m的值,0则i为质数
{
if(m==0)
{
zys[k]=i;
fread(&k,sizeof(k),1,p);
fread(zys,sizeof(k),k,p);//将质数从文件读入数组
fclose(p);
scanf("%d",&xz);
xz1=xz;
while(zys[i]<=xz)
{
while(xz%zys[i]==0)//判断输入数能否被此质数整除,如果能整除就用整除后的数再除以这个质数,直到这个数不能被任何质数整除为止
#include<stdio.h>
int main()
{
fenjie();
}
int fenjie()
{
void sczys();//求出1到500的所以质数,并输出到文件保存
int fjzys(FILE *p);//通过质数分解质因数
FILE *pj;
printf("本程序功能——分解质Biblioteka Baidu数\n输入一个正整数:\n");
back:if((pj=fopen("质因数","rb"))==NULL)//打开质数文件,如果没有则求质数并输出到文件
{
sczys();
goto back;//文件创建之后重新打开
}
else
{
fjzys(pj);//将文件作为参数代入函数
printf("\n");
goto back;
}
return 0;
k++;
}
}
j++;
}
i++;
}
fwrite(&k,sizeof(i),1,p);//k为质数的个数——在文件的开始存储质数的个数,为读取准备
fwrite(zys,sizeof(i),k,p);
fclose(p);
}
int fjzys(FILE *p)
{
int xz,xz1,i=0,j=0,k,fh,zys[100]={0};