《C语言名题精选百则----11》

来源:互联网 发布:剑3正太捏脸数据 编辑:程序博客网 时间:2024/05/16 11:05

10题我给掠过了。

这是第11个题目:



我的答案:

#include<stdio.h>#define MAXSIZE 10000int 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;}elseprintf("*%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;}

稍后研究。

原创粉丝点击