质因数分解

简介: 笔记

质因数分解


#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
#define maxn 1005
using namespace std;
int p[maxn],c[maxn],tot;
void devide(int n){
    tot=0;
    for(int i=2;i<=sqrt(n);++i){
        if(n%i==0){
            ++tot;
            p[tot]=i;
            c[tot]=0;
            while(n%i==0){
                n/=i;
                ++c[tot];
            }
        }
    }
    if(n>1){
        ++tot;
        p[tot]=n;
        c[tot]=1;
    }
    return;
}
int main(){
    int n;
    scanf("%d",&n);
    devide(n);
    for(int i=1;i<=tot;++i){
        printf("%d %d\n",p[i],c[i]);
    }
    return 0;
}


欧拉筛版质因数分解


先进行欧拉筛 找出每个数的最小质因子7.png

//核心:n只会被最小质因子筛掉
int cnt; //素数的个数
int v[N]; //存每个数的最小质因子
int prime[N]; //存素数
void get_primes(int n){
    for(int i = 2;i <= n; ++i){
        if(v[i] == 0){
            v[i] = i;
      prime[++cnt] = i;
        }
        for(int j = 1 ; j <= cnt;++j){
            if(prime[j] > v[i] || i * prime[j] > n) break;
            v[prime[j] * i] = prime[j];
        }
    }
}
void divide(int n) {
    while (v[n]) {
        printf("%d ", v[n]); // 在前
        n /= v[n]; //在后
    }
}
目录
相关文章
|
5月前
|
人工智能 算法 BI
数学知识:质数与约数
数学知识:质数与约数
62 0
|
5月前
|
Java C++
筛法求质数
筛法求质数
48 0
|
11月前
|
C++
筛质数、分解质因数和快速幂的应用
筛质数、分解质因数和快速幂的应用
59 0
|
5月前
|
算法 测试技术 C++
【数学归纳法 组合数学】容斥原理
【数学归纳法 组合数学】容斥原理
|
5月前
|
算法 测试技术 C#
【数学】【数论】【最大公约数】1819. 序列中不同最大公约数的数目
【数学】【数论】【最大公约数】1819. 序列中不同最大公约数的数目
|
11月前
一个求公约数和公倍数的有趣求法
一个求公约数和公倍数的有趣求法
48 0
|
算法 C语言 C++
【数论】最大公约数、约数的个数与约数之和定理
先来科普下什么是约数:当a能被b整除,我们就说b为a的约数,b的倍数为a
103 0
|
算法
质数筛法:朴素素数筛,埃氏筛,欧式筛
质数筛法:朴素素数筛,埃氏筛,欧式筛
136 0
|
算法 C++
容斥原理算法的实现
容斥原理算法的实现
容斥原理算法的实现