运行超时,请修改#include <stdio.h>int prime_factor(int* factors, int num) { int cnt = 0; // 记录质因子的个数 for (int i = 2; i <= num; i++) { while (num % i == 0) { // 不断除以当前质因子,直到除不尽为止 factors[cnt++] = i; // 将当前质因子存入数组中 num /= i; } } return cnt;}int main() { int n; scanf("%d", &n); int f[32]; int cnt = prime_factor(f, n); printf("%d", *f); for (int i = 1; i < cnt; i++) { printf("*%d", *(f + i)); } printf("\n"); return 0;}
时间: 2024-01-14 09:01:56 浏览: 59
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
以下是修改后的代码,主要是在判断质因子时,只需要判断到num的平方根即可,这样可以减少循环次数,提高程序效率。
```c
#include <stdio.h>
#include <math.h>
int prime_factor(int* factors, int num) {
int cnt = 0; // 记录质因子的个数
int limit = sqrt(num); // num的平方根
for (int i = 2; i <= limit; i++) {
while (num % i == 0) { // 不断除以当前质因子,直到除不尽为止
factors[cnt++] = i; // 将当前质因子存入数组中
num /= i;
}
}
if (num > 1) { // num本身也是一个质因子
factors[cnt++] = num;
}
return cnt;
}
int main() {
int n;
scanf("%d", &n);
int f[32];
int cnt = prime_factor(f, n);
printf("%d", *f);
for (int i = 1; i < cnt; i++) {
printf("*%d", *(f + i));
}
printf("\n");
return 0;
}
```
阅读全文