问题链接:
问题描述:参见上文。
问题分析: 这是一个整数因子分解问题。采用计算欧拉函数的基本思想进行分解,即从小因子开始逐步分解。
需要注意的是,对于需要分解的整数n,最后被分解到只剩下1时,不需要输出,即不输出1。
程序说明:(略)
AC的C语言程序如下:
#include#include // 欧拉函数法void divide(int n){ int count = 0, i; while(n%2 == 0) { n /= 2; if(++count == 1) printf("2"); else printf("*2"); } for(i=3; i*i<=n; i+=2) { if(n%i == 0) { n /= i; if(++count == 1) printf("%d", i); else printf("*%d", i); while(n%i == 0) { n /= i; printf("*%d", i); } } } if(n != 1) { if(++count == 1) printf("%d", n); else printf("*%d", n); } printf("\n");}int main(void){ int n; while(scanf("%d", &n) != EOF) divide(n); return 0;}