提交记录 #59
提交时间:2024-10-29 22:20:51
语言:c
状态:Accepted
编译情况:编译成功
固定测试点#1:
固定测试点#2:
固定测试点#3:
额外测试点#3600:
M62【期中测验6】质因子分解2
#include <stdio.h>
#include <math.h>
void decompose(int n) {
// 假设最多有100个不同的因子
int count[100] = {0};
int factors[100]; // 存储不同的因子
int num_factors = 0; // 记录不同因子的数量
// 分解整数并记录每个因子的出现次数
for (int i = 2; i <= sqrt(n); i++) {
int count_i = 0; // 因子i的出现次数
while (n % i == 0) {
count_i++;
n /= i;
}
if (count_i > 0) {
factors[num_factors] = i;
count[num_factors++] = count_i;
}
}
// 如果n大于2,则剩下的n是最后一个因子
if (n > 2) {
factors[num_factors] = n;
count[num_factors++] = 1;
}
// 输出分解后的因子乘积
for (int i = 0; i < num_factors; i++) {
if (i > 0) {
printf("*");
}
printf("%d", factors[i]);
if (count[i] > 1) {
printf("^%d", count[i]);
}
}
}
int main() {
int num;
// 从用户那里获取输入
scanf("%d", &num);
// 调用函数来分解整数
printf("%d=", num);
decompose(num);
printf("\n");
return 0;
}