1. 程式人生 > >【模板】質因數分解

【模板】質因數分解

space \n int return name puts continue con ont

對於 N 的質因數分解,直接從 2 開始遍歷到 \(\sqrt(n)\) 即可,最後如果 N>1,則多計入一個因子即可。

代碼如下

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5;

int n,p[maxn],num[maxn],cnt;

int main(){
    int T=0;
    while(scanf("%d",&n)&&n>=0){
        if(T)puts("");
        cnt=0;
        for(int i=2;i<=sqrt(n);i++){
            if(n%i!=0)continue;
            p[++cnt]=i,num[cnt]=0;
            while(n%i==0)n/=i,++num[cnt];
        }
        if(n>1)p[++cnt]=n,num[cnt]=1;
        printf("Case %d.\n",++T);
        for(int i=1;i<=cnt;i++)printf("%d %d ",p[i],num[i]);
        puts("");
    }
    return 0;
}

【模板】質因數分解