问题链接:HDU1164 Eddy's research I
问题描述:参见上文。
问题分析:这是一个整数因子分解问题。采用计算欧拉函数的基本思想进行分解,即从小因子开始逐步分解。
需要注意的是,对于需要分解的整数n,最后被分解到只剩下1时,不需要输出,即不输出1。
程序说明:(略)
AC的C语言程序如下:
#include <stdio.h> #include <math.h> // 欧拉函数法 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(" "); } int main(void) { int n; while(scanf("%d", &n) != EOF) divide(n); return 0; }