一个数学问题,分解某个数的质因数,将数写成例如 25 = 5 * 5 这样。本文代码还加了步写入txt文件的步骤。
虽然说是非递归,但是用了while循环代替了递归的功能。
void p_prime(int *arr,int size)
{
FILE* fp=fopen("output.txt","w");
int t,count;
for(int i=0;i<size;i++)
{
printf("%d = ",arr[i]);
fprintf(fp,"%d = ",arr[i]);
t=arr[i];
count=0;
while(arr[i]>1)
{
if(is_prime(t)==1)
{
while(arr[i]%t==0 && arr[i]>1)
{
if(count==0)
{
fprintf(fp," %d ",t);
printf(" %d ",t);
arr[i]=arr[i]/t;
count=1;
}
else
{
arr[i]=arr[i]/t;
fprintf(fp,"X %d ",t);
printf("X %d ",t);
}
}
t--;
}
else
t--;
}
fprintf(fp,"\n");
printf("\n");
}
fclose(fp);
}
文中数组arr来源于main函数传值, 调用 p_prime(arr,size);
以上是代码运行的结果,同时还有output.txt文件被写入内容,欢迎谈论交流