1.题目描述

所谓因子分解,就是把给定的正整数a,分解成若干个素数的乘积,即 a = a1 × a2 × a3 × … × an,并且 1 < a1 ≤ a2 ≤ a3 ≤ … ≤ an。其中a1、a2、…、an均为素数。
先给出一个整数a,请输出分解后的因子。

2.输入描述:

输入包含多组数据,每组数据包含一个正整数a(2≤a≤1000000)。

3.输出描述:

对应每组数据,以“a = a1 * a2 * a3…”的形式输出因式分解后的结果。

4.输入例子:

10
18

5.输出例子:

10 = 2 * 5
18 = 2 * 3 * 3

6.解题思路:

由题意,需要我们求出可以整除n的数,
我们可以从2开始循环到根号n,判断是否能整除n <mark>(大于根号n的数不可能整除,减小循环次数)</mark>
每判断一次按要求输出可以整除的数并用该数将n整除,直到i==n结束循环(因为被整除后的n可能会小于根号n,而i递增循环不能大于被整除后的n,故以此为结束条件)
最后输出不能再被整除的n

7.源代码:

#include<stdio.h>
#include<math.h>
int main()
{
	int i,n;
	while(scanf("%d",&n)!=-1)
	{
		printf("%d = ",n);
		for(i=2;i<=sqrt(n);i++)
			while(n!=i)
			{
				if(n%i==0)
				{
					printf("%d * ",i);
					n/=i;
				}
				else
					break;
			}
		printf("%d\n",n);
	}
	return 0;
}