HDU1164 Eddy's research I【素因子分解】

问题链接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("\n");
}

int main(void)
{
    int n;
    while(scanf("%d", &n) != EOF)
        divide(n);

    return 0;
}



posted on 2016-04-29 15:31  海岛Blog  阅读(116)  评论(0编辑  收藏  举报

导航