10题我给掠过了。
这是第11个题目:

我的答案:
#include<stdio.h>
#define MAXSIZE 10000
int main()
{
int n;
int a[MAXSIZE] = {0};
int i;
int t;
int j;
int flag = 0;
printf("Input number : ");
scanf("%d",&n);
t = n;
for(i = 2;i <= t / 2;i++)
{
while(n % i == 0)
{
n = n / i;
a[i]++;
}
}
printf("%d == ",t);
for(i = 0;i <= t / 2;i++)
{
for(;a[i] > 0;a[i]--)
{
if(!flag)
{
printf("%d",i);
flag = 1;
}
else
printf("*%d",i);
}
}
printf("\n");
}标准答案:
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define SAVE_FACTOR(fact,exp) {if(exp > 0) factors[count] = fact,exps[count++] = i;}
int main()
{
unsigned long factors[MAXSIZE];
unsigned long exps[MAXSIZE];
unsigned long n,work;
int count = 0;
int i,k;
char line[100], *dummy;
gets(line);
n = strtoul(line,&dummy,10);
for(i = 0,work = n;(work & 0x01UL) == 0 && work > 1;work >>= 1,i++)
;
SAVE_FACTOR(2,i);
for(k = 3; k <= work;k += 2)
{
for(i = 0; work % k == 0 && work > 1;work /= k,i++)
;
SAVE_FACTOR(k,i);
}
printf("\n%ld = ",n);
for(i = 0;i < count;i++)
{
printf("%ld[%ld]",factors[i],exps[i]);
}
return 0;
}稍后研究。
本文提供了两种不同的质因数分解算法实现方案,一种适用于初学者理解基本原理,另一种则展示了更高效的实现方式,包括了如何处理偶数和奇数的情况。

被折叠的 条评论
为什么被折叠?



