【模板】質因數分解
阿新 • • 發佈:2019-03-14
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; }
【模板】質因數分解