质因数分解 90=2*3*3*5

//90=2*3*3*5 
//非递归
#include<stdio.h>
int main() {
    int n;
    while(scanf("%d",&n)!=EOF) {
        int b;
        while(n!=1) {
            int i;
            for(i=2;i<n;i++) {
                if(n%i==0) {
                    printf("%d*",i);
                    n = n/i;
                    break;
                }
            }
            if(i==n) {
                printf("%d",n);
                break;
            } 
        }
        printf("\n");
    }
}

 递归的解法:

#include<stdio.h>

void f(int x) {
    int i;
    if(x == 1) return;
    for(i=2;i<x;i++) {
        if(x%i==0) {
            printf("%d*",i);
            f(x/i);
            break;
        }
    }
    if(i==x) printf("%d",i);
}

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

 

posted @ 2013-02-28 20:38  msober  阅读(375)  评论(0编辑  收藏  举报