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

给定某个正整数 N,求其素因子分解结果,即给出其因式分解表达式 N=p1​​k1​​​​p2​​k2​​​​pm​​km​​​​。

输入格式:

输入long int范围内的正整数 N。

输出格式:

按给定格式输出N的素因式分解表达式,即 N=p1^k1*p2^k2*…*pm^km,其中pi为素因子并要求由小到大输出,指数kipi的个数;当ki为1即因子pi只有一个时不输出ki

输入样例:

1323
 

输出样例:

1323=3^3*7^2

代码:
#include <cstdio>
#include <iostream>
#define inf 0x3f3f3f3f
using namespace std;

bool ispri(int k) {
    if(k <= 1) return false;
    if(k <= 3) return true;
    if(k % 6 != 1 && k % 6 != 5) return false;
    for(int i = 5;i < k / i;i += 6) {
        if(k % i == 0 || k % (i + 2) == 0) return false;
    }
    return true;
}

int main() {
    int n,flag = 0;
    scanf("%d",&n);
    printf("%d=",n);
    if(n == 1) printf("1");
    for(int i = 2;i <= n;i ++) {
        if(!ispri(i) || n % i) continue;
        int c = 0;
        while(n != 1 && n % i == 0) {
            c ++;
            n /= i;
        }
        if(flag) printf("*");
        else flag = 1;
        if(c > 1) printf("%d^%d",i,c);
        else printf("%d",i);
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/8023spz/p/12307973.html
今日推荐