一个数学问题,分解某个数的质因数,将数写成例如 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);

 

 

非递归分解某个数的质因数(c语言)

 

以上是代码运行的结果,同时还有output.txt文件被写入内容,欢迎谈论交流

相关文章: