#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> char* getResult(long ulDataInput); int main(void) { long int ulDataInput = 0; scanf("%ld", &ulDataInput); char* string = { 0 }; string = getResult(ulDataInput); puts(string); // 打印 free(string); // 释放,防止内存泄漏 system("pause"); return 0; } char* getResult(long ulDataInput) { char* string = (char*)malloc(ulDataInput*sizeof(char)); char* s = { 0 }; int j = 0; long int num = ulDataInput; for (long int i = 2; i <= ulDataInput; i++) // 提取公因子 { while (num%i == 0) // 如果取余为0,则表明i为公因子 { num /= i; sprintf(string + j, "%ld%c", i, ' '); // 将公因子i和‘ ’组合成字符串 j = strlen(string); // 用于修改指针 } } return string; }