進階實驗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