【数论】【算术基本定理】[LightOJ1289]LCM from 1 to n

高斯整数环Z[i]、整数环Z等UFD的算术基本定理的C++程序实现 代数和数论中的程序计算问题之高斯整数环Z[i]、整数环Z等UFD的算术基本定理的C++程序实现 立即下载

题目
分析:设L(n)为LCM(1,2,3……n),则有

这里写图片描述

若n+1不是 质数的完全平方,则可将质因数分解成p1^a1*p2^a2*……pn^an,对于每个pi^ai,显然<n,且两两互质,所以p1^a1*p2^a2*……pn^an|L(n),所以n+1|L(n),L(n +1)=L(n)

若n+1是质数的完全平方,则n+1=p^k,p^k不整除1….n,p^k不整除L(n),因为p^(k-1)|L(n),所以p^(k-1)*p|L(n)*p,所以L(n+1)=L(n)*p。

筛法求素数时用位图压缩节省空间。

在实现过程中,如果暴力检查一个数是不是素数的幂,显然十分慢,所以计算所有素数的前缀和,对于前缀和的用法,看注释

#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define MAXP 6000000
#define MAXN 100000000
#define SHIFT 5
int p[MAXP+10],pcnt,n,T;
unsigned int sum[MAXP+10];
int f[(MAXN+10)>>SHIFT];
void SetBit(int x){
    f[x>>SHIFT]|=1<<(x&((1<<SHIFT)-1));
}
bool GetBit(int x){
    return f[x>>SHIFT]&(1<<(x&((1<<SHIFT)-1)));
}
void isprime(){
    int i,j,t=sqrt(MAXN+0.5);
    for(i=2;i<=t;i++){
        if(!GetBit(i)){
            p[++pcnt]=i;
            for(j=i*i;j<=MAXN;j+=i)
                SetBit(j);
        }
    }
    for(;i<=MAXN;i++)
        if(!GetBit(i))
            p[++pcnt]=i;
}
void prepare(){
    sum[0]=1;
    for(int i=1;i<=pcnt;i++)
        sum[i]=sum[i-1]*p[i];
}
int main()
{
    isprime();
    prepare();
    scanf("%d",&T);
    int Case=0;
    while(T--){
        scanf("%d",&n);
        printf("Case %d: ",++Case);
        unsigned int ans=1;
        int cnt=1;
        while(1)
        {
            int m=(int)pow(n+0.9,1.0/cnt);     //求n的cnt次方根
            if(m<2)
                break;
            int i=lower_bound(p+1,p+pcnt+1,m)-p;       //对于前i个素数,它们的cnt次方<=n
            if(p[i]!=m)
                i--;
            ans*=sum[i];                        //相当于枚举了前i个数的cnt次方
            cnt++;
        }
    printf("%u\n",ans);
    }
}
激光器安规详细解读 - 一级 - 并以940波长为例 前言: 作为人工智能的重要解决方案,激光作为不可或缺的一个选项。但是,激光的安规问题始终是要得到关注。尤其是3D识别技术在人脸上的使用的时候,如何判读激光器的安全使用规范,变得非常重要。本文,尝试从欧洲激光标准IEC 60825-1:2014,以及国家激光产品规则标准GB 7247.1,抛砖引玉,写出自己的理解。 本节,主要讨论,人脸识别需要符合的安全等级1: 1 激光标准的分类 激光国际... 阅读详情

相关推荐

复合材料热压罐固化残余应力仿真与优化

复合材料在热压罐固化过程中产生的残余应力是影响构件性能的关键因素,尤其在航空航天和风电叶片等高端制造领域。通过多物理场耦合仿真技术,可以精确预测残余应力分布,优化工艺参数。顺序耦合方法分步求解热分析和结构分析,既保证了计算精度,又控制了成本。Abaqus等有限元工具在此过程中发挥重要作用,通过合理设置边界条件、材料属性和接触关系,能够有效模拟温度场和应力场的相互作用。工程实践中,这种仿真方法已成功应用于无人机机翼、卫星支架等实际项目,显著降低了固化变形和微裂纹风险。

weixin_33146151的博客 212

lightoj-1289(数论+素数打表)

Given an integer n, you have to findlcm(1, 2, 3, ..., n)lcm means least common multiple. For example lcm(2, 5, 4) = 20, lcm(3, 9) = 9, lcm(6, 8, 12) = 24.InputInput starts with an integer T (≤ 10000),...

wust_cyl的博客 741

【从零开始玩量化7】easyTrader: 自动化(程序化)交易利器

前面的文章,我们介绍了数据获取工具AKShare, 量化回测工具backtrader等,这一篇,介绍程序化交易工具easyTrader。作者网名食灯鬼,目前项目在Github上的star数已经有6.7k。这可能是目前,开源能找到的,最好用的程序化交易库了。本文介绍了easyTrader的简单用法,这个包还有很多功能,后续再继续写文章探究。

量化投资助手的博客 1万+

【C/C++】【基础数论】33、算数基本定理

因为能被开平方得到整数意味着该数存在一个相同的因数与其自身相乘得到这个数,比如 9 能被开平方为 3,9 = 3×3,有除了 1 和它本身之外的因数 3,所以不是质数。算术基本定理指出:任何一个大于 1 的正整数都可以唯一地分解成有限个质数的乘积形式,且这些质数按照从小到大的顺序排列,其指数也是唯一确定的。任何一个大于 1 的正整数都可以唯一地分解成有限个质数的乘积形式,且这些质数按照从小到大的顺序排列,其指数也是唯一确定的。而质数只能被 1 和它自身整除,不存在可以开平方得到但是还是质数的情况的情况。

qq_14840819的专栏 1438

论文分享 - OctoMap八叉树建图原理

论文:OctoMap:An Efficient Probabilistic 3D Mapping Framework Based on Octrees。

一只废佐_的博客 2539

硬件单板类机考复习提纲

6、 功率晶体管低导通损耗时处于的状态(饱和状态、放大状态、截止状态)(放大器的采样频率特性)总结:元器件特性(电阻、电容、二极管、三极管、晶体、晶振、MOS、磁珠等)信号质量问题产生根因(单调性、边沿过缓、毛刺、回沟、抖动等)3、 几种电容容量范围大小(超级电容、钽电容、陶瓷电容、铝电容)66、背板连接器接触设计的接触顺序(先导向、再地针、最后信号针)28、逻辑电平接口的特性(CMOS、TTL、ECL、PECL)76、差分电平(lvpecl、RS-422/485、cml)

2303_79562407的博客 1万+

LightOJ 1289 LCM from 1 to n

题目分析 这道题首先给人的感觉就是素数筛,但是空间明显不够,但是看看时间好像可以在4ms算完,于是就要优化空间了,然后学习了一个神奇的数据结构位图。话说位图看了半天其实就是在每个数组中用保存的2进制数来表示该数是否存在。因此我们设mod为32,那么对与每一个数i都可以的到一个商即i/mod,和一个余数i%mod,并且这一对数是唯一的,因此我们就可以在vis下标为i/mod存储1<<(i%mod)

你真的介意真的在乎真的想要真的渴望的话你一定能够做到 617

Chroma向量数据库实战:用Python快速搭建本地知识库(附中文诗词检索案例)

本文详细介绍了如何使用Chroma向量数据库和Python快速搭建本地知识库,并附有中文诗词检索的实战案例。通过解析核心概念、数据准备、向量化及智能检索实现,展示了Chroma在处理中文语义搜索时的轻量级与易用性,为开发者构建AI应用原型提供了实用指南。

weixin_29221753的博客 479

LightOJ 1289

解题思路 用到了数论L(x) 求的是 LCM(1,2,3.....x) LCM 求最小公倍数 L(1) = 1 L(x+1) = { L(x) * p if x+1 is a perfect power of prime p { L(x) otherwise上面的知识点,在纸上推演一下就可以得出结论,根据求最小公倍数的公式,分子分母在每次遇到非素数的时候能...

北望村 424

数字孪生教程大全之 我们如何构建数字孪生?数字孪生的五个级别都是什么

文章摘要 什么是数字孪生? 我们如何构建数字孪生? 开发智能数字孪生系统的框架 什么是数字孪生? 数字孪生是一个不言自明的术语,用于识别物理系统的数字化版本。数字孪生的最早参考来自大卫·格伦特(David Gelernter )的小说作品。在他 1995 年的书中,Gelernter 博士为读者提供了未来有趣的可能性——万维网。前网络书籍谈到了计算机系统上的镜像数字世界。有些人可能会争辩说,我们的 Meta-verse 是新的数字世界——现实世界的数字孪生。但是,还有其他可能性,时间可能会讲述一个更好的

iCloudEnd的博客 3629

2026年VIVO嵌入式岗位高频面试题(含参考答案)

摘要:VIVO嵌入式岗位考核涵盖智能手机、IoT设备、芯片适配等方向,重点考察硬件底层交互、RTOS/Linux开发、C/C++功底与问题排查能力。题目按优先级排序,分硬件架构、RTOS、C/C++、数据结构、Linux实践、行业认知6大模块,共40道题。硬件部分涉及中断、ARM架构、加速技术、BSP开发等;RTOS部分区分硬/软实时系统;C/C++部分侧重内存管理、位操作;Linux部分考察常用命令;行业部分关注鸿蒙等系统理念。题目设计贴合实际工作场景,全面评估嵌入式开发能力。

Open 52

算术基本定理(唯一分解定理)

算术基本定理(唯一分解定理) 学到唯一分解定理的时候感觉非常陌生,好像是小学学的东西,个人的理解就是分解质因数 根据各种百科的解释大概就是下面这个意思: 算数基本定理(正整数的唯一分解定理):每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,且写法仅有一种方式。 第一种: 直接把n的质因数挨个输出 代码如下 #include<bits/stdc++.h> using n...

只爱宝贝 1905

C++性能优化:深入理解缓存一致性与伪共享

在现代多核处理器的世界里,理解缓存一致性和伪共享就像理解一个复杂社会系统的运作规则。正如心理学家阿德勒所说:"人的行为总是有目的的",CPU缓存的每一次同步也都有其深层的硬件逻辑。本文将带你深入探索这些看不见的性能杀手,以及如何在实际项目中与它们优雅共处。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 933

C++ 算术基本定理

描述 算术基本定理(将一个正整数分解质因数),又称为正整数的唯一分解定理,即:每个大于1的自然数(且不是质数)均可分解为质数的积,而且这些质因数按小大排列之后,写法仅有一种方式(唯一的)。请编写程序对输入的正整数进行质因数分解。 输入 输入只有一组数据,从键盘输入一个大于1的正整数n(n&lt;100000,且保证n不是质数)。 输出 按从小到大的顺序输出该整数的质因数乘积形式。 ...

LQ9899的博客 3089

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LCM from 1 to n(素数筛+位图优化空间)

题目链接:LCM from 1 to n 题意:求1 - n的lcm 思路: 最小公倍数的适用范围:分数的加减法,中国剩余定理(正确的题在最小公倍数内有解,有唯一的解)。因为,素数是不能被1和自身数以外的其它数整除的数;素数X的N次方,是只能被X的N及以下次方,1和自身数整除。所以,给最小公倍数下一个定义:S个数的最小公倍数,为这S个数中所含素因子的最高次方之间的乘积。 如:求756,4400,...

C'est la vie! 363

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LCM from 1 to n

https://cn.vjudge.net/problem/LightOJ-1289 题意   计算出1到n的数的最小公倍数 题解   我们知道一个数必定能分解成一些质数相乘,而一些数的lcm = 他们分解成的质数取最高次幂x再相乘。列如4和6分解为\(2^2\)和2*3,那么lcm = \(2^2\)*3 = 12。所以我们这道题其实就是找有多少质数在n的范围内并乘上它们在范围...

307

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LightOJ 1289 LCM from 1 to n(位图标记+欧拉筛)

题目链接:https://vjudge.net/contest/373416#problem/A 位图标记法:https://blog.youkuaiyun.com/acdreamers/article/details/18507767 题意:要求是让求1到n的最小公倍数。 思路:https://blog.youkuaiyun.com/qq_42815188/article/details/104328129 注:用二分查找节省时间,还有本题要求最终结果mod 2^32,可以借助 unsigned int 溢出时等价。..

xian_ing的博客 334

简单的使用C++搞定算术基本定理

简单的使用C++搞定算术基本定理 #include #include using namespace std; int main() { int n,i=2; float a; cin>>n; a=sqrtf(n); while(i<=a) { while(n%i==0) { cout<<i; if(n!=i) cout<<"*"; n=n/i; } i...

IT_xiaomengxin的博客 832

给你一个N, 求最小的M使得LCM(1,2,3...M)等于 LCM(N+1,N+2,...,M)

.

ureaster的博客 3039

lightoj 1289 LCM from 1 to n

题意: 求LCM(1, 2, 3, ... n)的值mod 2^32 思路:很显然我们是要求所有的 注意这里的n #include #include using namespace std; typedef long long ll; const int N = 100000000+2; const ll MOD = 1LL<<32; unsigned

JayYe的专栏 1743

LightOJ 1289 LCM from 1 to n (节省空间的素数筛法+n个数的最小公倍数)

题目链接:http://lightoj.com/volume_showproblem.php?problem=1289 题意:给出n,求1到n的所有数的最小公倍数,模2^32. 思路:看到结果需要模2^32,瞬间想到要尝试用unsigned int来存储结果,它可以表示的数据范围是0~2^32-1,这样不用做任何操作,结果自然就是模2^32的。 接下来就是筛素数了,常用的方法学名是:埃拉托斯

whyorwhnt的专栏 4867

Light OJ 1289 LCM from 1 to n(lcm问题+内存优化)

Light OJ 1289 LCM from 1 to n题意: 输入 t(t≤10000)t(t\leq10000) 组样例, 每组样例包含一个 n(2≤n≤108)n(2\leq n\leq10^8), 求 lcm(1,2,3,…,n)lcm(1,2,3,\ldots,n) . 思路:计算 lcm(1,2,3,…,n)lcm(1,2,3,\ldots,n) 有这么一个性质:

a novice 990

lightoj 1289【多个数求最小公倍数】

文章目录题目链接:手写位图:用bitset 题目链接: https://vjudge.net/contest/269935#problem 直接求lcm途中的答案会很大,而且不能直接取模 以前就只知道两个数的lcm怎么求,但是多个数怎么办呢?以为也是除以他们的gcd就行了,结果不对,自己推也没有推出来,网上看了大佬们的想法才知道,是要找每个质因子最高次的 比如说2 4 6,这三个数的lcm=12,...

帅气廖鹏飞 609
上一篇: 【数论】[CF258C]Little elephant and LCM
下一篇: 【搜索】[HDU1175]连连看
outer_form
博客等级 码龄11年 110粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值