编程算法实例-整数分解质因数

‌每个合数都可以写成几个质数(也可称为素数)相乘的形式,这几个质数就都叫做这个合数的质因数。

质因数‌(又称素因数或质因子)是指能整除给定正整数的质数,例如36的质因数为2和3(分解为2²×3²)。

c 复制代码
#include <stdio.h>
#include <stdlib.h>

//
int *factorNum(int n) {
	//
	int *arr = malloc(sizeof(int) * 100);
	//
	int index = 1;
	for (int i = 2; i <= n; i++) { 
		while (n != i) { 
			if (n % i == 0) { 
				arr[index++] = i;
				n = n / i; 
			} else {
				break; 
			}
		} 
	} 
	//
	int len = index + 1;
	arr[0] = len;
	arr[index] = n;
	//

	return arr;
}

int main()
{	

 	int n = 51; 	
	int *arr = factorNum(n);
	int len = arr[0];
	//
	printf("%d = ",n);
	for (int i = 1; i < len; i++) {
		printf("%d %c ", arr[i], (i != len - 1 ? '*' : ' '));
	}
	
   return 0;
}

10 = 2 * 5

18 = 2 * 3 * 3

50 = 2 * 5 * 5