进阶实验2-3.4 素因子分解 (20分)

 

 解题思路:

1、由小到大寻找N的素因子i,

    1)当N%i==0时,让N=N/i,计数,循环直到N%i !=0

    2)此时判断N是否是1,如果N==1则直接退出,若N!=1 则继续寻找下一个素因子,重复操作1

#include <stdio.h>
#include <math.h>
typedef enum {false,true
             } bool;
bool IsPrime(int n) {
    if(n==0||n==1)
        return false;
    if(n>2) {
        int i;
        for(i=2; i<=sqrt(n)+1; i++) {
            if(n%i==0)return false;
        }
    }
    return true;
}
int main() {
    int x;
    scanf("%d",&x);
    int i,cnt;
    printf("%d=",x);
    int flag=0;
    if(x==1)
        printf("1");
    else {
        for(i=2; i<=x; i++) {
            if(x%i==0) {
                if(IsPrime(i)) {
                    flag=1;
                    printf("%d",i);
                    cnt=0;
                    while(x%i==0) {
                        x/=i;
                        cnt++;
                    }
                    if(cnt>1)
                        printf("^%d",cnt);
                    if(x!=1) {
                        printf("*");
                    } else
                        break;

                }
            }
        }
    }


    return 0;
}

 

posted @ 2020-03-07 17:42  跃鱼  阅读(488)  评论(0编辑  收藏  举报