题目链接:https://vjudge.net/contest/156903#problem/C

题意:给一个数 n ,求至少 2个正整数,使得他们的最小公倍数为 n ,而且这些数之和最小。

分析:

利用唯一分解定理:

可以知道,最好是把每一个ai^pi为一个整数;

1、ai^pi不能再分,否则最小公倍数就将小于 n;题目就变成了将 n 唯一分解。

2、由于小于 n 的最大素数是一个界限,不然会超时。处理方案是:m = sqrt(n) + 0.5,最后判断一下 n;或者如上一个题目一样,数据时2^31次方,循环检查到10^5;

3、特例 1,输出2;是素数 n+1;

 #include <bits/stdc++.h>

 using namespace std;

 int divide_all(int& n,int d) {
int x = ;
while(n%d==) {
n/=d;
x*=d;
}
return x;
} long long solve(int n) {
if(n==) return ;
int m = sqrt(n)+0.5;
int pf = ;
long long ans = ;
for(int i=;i<=m;i++) {
if(n%i==) {
pf++;
ans+=divide_all(n,i);
}
}
if(n>) {pf++,ans+=n;}
if(pf<=) ans++; //是素数
return ans;
} int main()
{
int n;
int kase=;
while(scanf("%d",&n),n) {
cout<<"Case "<<kase++<<": "<<solve(n)<<endl;
}
return ;
}

最新文章

  1. 如何在springMVC 中对REST服务使用mockmvc 做测试
  2. 转:django 接收页面form的post数组
  3. PHPExcel读取Excel文件的实现代码
  4. 【转】C#Winform程序如何发布并自动升级(图解)
  5. Theano3.2-练习之数据集及目标函数介绍
  6. jtable插件api
  7. Java解析XML三种常用方法
  8. 欢迎大家提问Android技术及职业生涯等问题
  9. MySQL: 详细的sql语句
  10. MVC-处理时间格式
  11. OpenCV学习笔记:如何扫描图像、利用查找表和计时
  12. Android NetWorkUtil
  13. Struts2与ajax整合之缺点
  14. ●SPOJ 8222 NSUBSTR&ndash;Substrings(后缀自动机)
  15. 一文搞懂RAM、ROM、SDRAM、DRAM、DDR、flash等存储介质
  16. Scrapy框架基本用法讲解
  17. 数据库的DevOps实践
  18. [security][modsecurity][nginx] nginx 与 modsecurity
  19. javaee开发模式
  20. 转:Struts2返回JSON数据的具体应用范例

热门文章

  1. Java学习笔记day04_数组
  2. 搭建hadpoot平台(集群式分布)
  3. python_文件操作代码实例
  4. robot framework 的AutoItLibrary常用关键字
  5. 关于imageview matrix
  6. python 几个常用自定义函数在dataframe上的应用
  7. Linux常用操作命令介绍
  8. Kudu的优点
  9. GET 和 POST详解
  10. 深入.NET框架。