当前位置: 首页 > news >正文

数学知识——分解质因数

分解质因数模板

时间复杂度 O ( n ) O(\sqrt n) O(n )
把一个数 n n n分解质因数之后,大于 n \sqrt n n 的质因数最多有一个,也正因此我们可以只考虑 ≤ n \leq \sqrt n n 的数,最后再做特判。

void divide(int n)
{
    int x = sqrt(n);
    for (int i = 2; i <= x; i ++ )
    {
        int s = 0;
        while (n % i == 0)
        {
            n /= i;
            s += 1;
        }
        if (s) printf("%d %d\n", i, s);
    }
    if (n > 1) printf("%d %d\n", n, 1);
    puts("");
    return ;
}

阶乘分解

给定整数 N N N,试把阶乘 N ! N! N! 分解质因数,按照算术基本定理的形式输出分解结果中的 p i pi pi c i ci ci 即可。

输入格式
一个整数 N N N

输出格式

N ! N! N!分解质因数后的结果,共若干行,每行一对 p i , c i p_i,c_i pi,ci,表示含有 p i c i p_i^{c_i} pici
项。按照 pi 从小到大的顺序输出。

数据范围
3 ≤ N ≤ 1 0 6 3≤N≤10^6 3N106

输入样例:

5

输出样例:

2 3
3 1
5 1

样例解释
5 ! = 120 = 23 ∗ 3 ∗ 5 5!=120=23∗3∗5 5!=120=2335

一个直观的想法是对于 1 ~ N 1~N 1N内的每一个数分解质因数,再把对应质因数的次方数加起来就是 N ! N! N!分解质因数的结果。但是时间复杂度为 O ( N N ) O(N\sqrt{N}) O(NN )会超时。

考虑先预处理出 N N N范围内的质数,对于每一个质数 p p p,在 N ! N! N!分解质因数的结果中所对应的次方数为 ⌊ N p ⌋ + ⌊ N p 2 ⌋ + ⌊ N p 3 ⌋ + . . . \lfloor\frac{N}{p}\rfloor+\lfloor\frac{N}{p^2}\rfloor+\lfloor\frac{N}{p^3}\rfloor+... pN+p2N+p3N+...。因为 N N N以内素数个数大概为 N / l n N N/lnN N/lnN,所以时间复杂度为 O ( N / l n N ∗ l o g p N ) ≈ O ( N ) O(N/lnN*log_p^N)≈O(N) O(N/lnNlogpN)O(N)

#include <iostream>
using namespace std;
#define N 1000010
bool st[N];
int prime[N];
int n, cnt = 0;
typedef long long ll;
void init(int n)
{
    for (int i = 2; i <= n; i ++ )
    {
        if(!st[i]) prime[cnt ++ ] = i;
        for (int j = 0; prime[j] * i <= n; j ++ )
        {
            st[i * prime[j]] =true;
            if (i % prime[j] == 0)break;
        }
    }
}
int main()
{
    cin >> n;
    init(n);
    for (int i = 0; i < cnt; i ++ )
    {
        int p = prime[i];
        int s = 0;
        for (ll j = p; j <= n; j *= p)
        s += n / j;
        printf("%d %d\n", p, s);
    }
    return 0;
}

文章转载自:

http://JFAgt0eD.bksbx.cn
http://Oei5JzM8.bksbx.cn
http://VmgT8A4p.bksbx.cn
http://FmAiX3CU.bksbx.cn
http://GEAqBtxO.bksbx.cn
http://obIJlAMb.bksbx.cn
http://EHUOe0QV.bksbx.cn
http://VT2pIHfG.bksbx.cn
http://UPucbb2y.bksbx.cn
http://aTlBf2E6.bksbx.cn
http://3xKMdSq4.bksbx.cn
http://htY9O1pb.bksbx.cn
http://tW4Nhy3I.bksbx.cn
http://IOXABDtC.bksbx.cn
http://8vlaw1mt.bksbx.cn
http://n5FziErq.bksbx.cn
http://0HdlGtHQ.bksbx.cn
http://piBhWB44.bksbx.cn
http://kMrItbV3.bksbx.cn
http://FMIOMIxy.bksbx.cn
http://skKeeoKN.bksbx.cn
http://6WyjprYc.bksbx.cn
http://VZMSwe7b.bksbx.cn
http://iaPkY4HA.bksbx.cn
http://LKLYxsVc.bksbx.cn
http://2tld4WKa.bksbx.cn
http://l72OElYz.bksbx.cn
http://n6s8YzIy.bksbx.cn
http://ofJsbzER.bksbx.cn
http://0Pabntnv.bksbx.cn
http://www.dtcms.com/a/116593.html

相关文章:

  • 蓝桥杯嵌入式16届 —— 按键模块
  • 数据库管理-第311期 不同数据库的存算分离有何不同(20250407)
  • 【Android Sdk】uiautomatorviewer.bats闪退问题如何解决?
  • C++标准库 —— round 函数用法详解
  • 【DeepSeek原理学习2】MLA 多头隐变量注意力
  • elasticSearch-搜索引擎
  • P2036 [COCI 2008/2009 #2] PERKET
  • 【Linux篇】基础IO - 揭秘重定向与缓冲区的管理机制
  • RFID警用装备柜|快速实现装备借出归还
  • 数学建模全解析-新能源汽车动力性与经济性优化
  • 关于Spring MVC中@RequestMapping注解的详细解析,涵盖其核心功能、属性、使用场景及最佳实践
  • [ctfshow web入门] web9
  • SQL121 创建索引
  • 机器学习核心概念、算法分类与应用场景全解析
  • Meta 最新发布的 Llama 4:多模态开源大模型全面解析
  • Spring MVC 的执行流程以及运行原理
  • 谷歌发布网络安全AI新模型Sec-Gemini v1
  • IPD项目管理软件:禅道与Asana的5个核心差异
  • 深入浅出Java 锁 | 源码剖析 | 万字解析
  • Vue3 实现进度条组件
  • Vue3全栈架构实战:Nuxt3服务端渲染与模块化设计深度剖析
  • 前端使用正则表达式提取经纬度 度分秒值
  • Linux命令之jq命令处理JSON数据
  • 【Linux】虚拟机设置静态IP
  • 【leetcode hot 100 763】划分字母区间
  • 【愚公系列】《高效使用DeepSeek》058-选题策划
  • real_time_camera_audio_display_with_animation
  • 华为OD机试2025A卷 - 正整数到excel编号之间的转换(Java Python JS C++ C )
  • 分布式微服务系统架构第97集:JVM底层原理
  • P1006 [NOIP 2008 提高组] 传纸条 题解