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;
}
稍后研究。