算术基本定理可表述为:
任何一个大于1的自然数 ,都可以唯一分解成有限个质数的乘积 ,
这里 均为质数,其诸指数 是正整数。
这样的分解称为 的标准分解式。
定理应用:
贴上代码:
#include<bits/stdc++.h>
#define MAXN 1e5
int N;
bool isprime[MAXN];
int prime[MAXN];//1-N中的素数
int cnt = 0;//记录1-N中素数的个数
struct node {
int p;
int num;
node() {p = 0; num = 0;}
} a[MAXN];
int m = 0;//素数组元素个数
void init() { //寻找1-N中的所有素数(埃氏筛)
memset(isprime,true,sizeof isprime);
for(int i = 2; i <= N; i++) {
if(isprime[i]) {
prime[cnt++] = i;
for(int j = 2;i * j <= N; j++)
isprime[i * j] = false;
}
}
}
void solve() { //算术基本定理分解N
m = 0;
for(int i = 0; i < cnt; i++) {
if(N % prime[i] == 0) {
while(N % prime[i] == 0) {
a[m].p = prime[i];
a[m].num++;
N /= prime[i];
}
m++;
}
}
}