#include #include // 函数:判断一个数是否为素数 int is_prime(int num) { int i; if (num <= 1) return 0; if (num == 2) return 1; if (num % 2 == 0) return 0; for (i = 3; i * i <= num; i += 2) { if (num % i == 0) return 0; } return 1; } // 函数:获取一个数的所有素数因子 void get_prime_factors(int num, int *factors, int *count) { int factor = 2; while (num > 1) { if (num % factor == 0) { factors[*count] = factor; (*count)++; num /= factor; } else { factor++; while (!is_prime(factor)) { factor++; } } } } int main() { int i,j; int num; scanf("%d", &num); if (num <= 1) { printf("输入的数必须大于1且为合数。\n"); return 1; } int factors[32]; // 假设最大int的素数因子数量不会超过32个 int count = 0; get_prime_factors(num, factors, &count); int occurrences[32] = {0}; // 用于记录每个素数因子的出现次数 int unique_factors[32]; // 记录所有唯一的素数因子 int unique_count = 0; for (i = 0; i < count; i++) { int factor = factors[i]; int found = 0; for (j = 0; j < unique_count; j++) { if (unique_factors[j] == factor) { occurrences[j]++; found = 1; break; } } if (!found) { unique_factors[unique_count] = factor; occurrences[unique_count] = 1; unique_count++; } } // 输出只出现一次的素数因子 for (i = 0; i < unique_count; i++) { if (occurrences[i] == 1) { printf("%d ", unique_factors[i]); } } printf("\n"); return 0; }