uva10791

此题是最小公倍数的推理。

此题考虑的情况比较多,不要漏来。我就因为漏了一个情况就傻逼了。。。

可以这么想

如果这个数是素数本身那么就肯定是素数+1的答案

如果这个数是1那么输出答案肯定是2

如果这个数只有一个素数因子构成例如25=(5*5)那么肯定是(5*5+1)的最小和(因为要满足最小共倍数,如果只有一个素数因子那么就相当与它自己的数的各个组合相加是不变的)

如果这个数有躲过素数组成那么就是相同素数相乘不同素数相加例如(30=(5*6)=(2*3*5)  5+6>2+3+5 , 12=(2*2)+3)可以这么想因为同一个素数的因子是不能变的(因为LCM是求Pi^max(n1,n2),所以同一个素数因子是相乘的和。不同的素数因子就看成断点。然后就相加就可以了)

此处有个我分析不到位的地方:

题目说n<=(2^31-1)我想素数用int就可以存下来的。但是对于打素数表的时候第二层循环j=i*i 我不知到为什么我加了小于条件来还是会爆段错误。我本来觉得是可以过的。难道是编译的时候先算出来然后待到段地址了? 后来我全改成LONG LONG 才过的


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值