进阶实验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;
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM