uva10791 - Minimum Sum LCM
来源:互联网 发布:max 软件下载 编辑:程序博客网 时间:2024/05/01 22:33
分析摘以为大神的::思路很清晰
分解质因子的一个题,将最小公倍数分解质因子,最小的和sum便为各个质因子的相应次方数之和。
此题难点在于几个特殊的情况的处理:
(1)当N = 1时,应输出2(1*1=1,sum=1+1=2);(2)当N是素数的时候,输出N+1(N*1=N,sum=N+1);
(3)当只有单质因子时,sum=质因子相应次方+1;
(4)当N=2147483647时,它是一个素数,此时输出2147483648,但是它超过int范围,应考虑用long long。代码如下:
#include <cstdio>#include <cmath>#include <cstring>#define M 100010bool prime[M];void is_prime(){ int len = sqrt(M+0.5); memset(prime,0,sizeof(prime)); for(int i = 2; i <= len; i++) if(prime[i]==0) for(int j = i*i; j < M; j+=i) prime[j] = 1;}int judge(int n){ if(n<M) return !prime[n]; int len = sqrt(n+0.5); for(int i = 2; i <= len; i++) if(n%i==0) return 0; return 1;}int main(){ int n, cas = 0; is_prime(); while(scanf("%d",&n),n) { printf("Case %d: ",++cas); if(judge(n)) { printf("%lld\n",(long long)n+1); continue;} int len = (int)sqrt(n+0.5), num = 0, tt; long long ans = 0; for(int i = 2; i <= len; i++) { if(n%i) continue; num++; tt = 1; while(n%i==0) { tt*=i; n/=i; } ans+=tt; } if(num==1||n!=1) ans+=n; printf("%lld\n",ans); } return 0;}
- uva10791 - Minimum Sum LCM
- UVA10791- Minimum Sum LCM
- UVA10791----Minimum Sum LCM
- uva10791 Minimum Sum LCM
- uva10791 Minimum Sum LCM
- uva10791 Minimum Sum LCM
- UVA10791 Minimum Sum LCM
- 【Uva10791】Minimum Sum LCM【LCM】【质因数分解】
- UVA10791 Minimum Sum LCM 数论素因子
- UVA10791 Minimum Sum LCM 质因数分解
- uva10791 Minimum Sum LCM(唯一分解定理)
- UVA10791 Minimum Sum LCM(数论)
- UVA10791 Minimum Sum LCM(唯一分解定理)
- UVA10791:Minimum Sum LCM(数论)
- Minimum Sum LCM(uva10791+和最小的LCM+推理)
- UVA10791 - Minimum Sum LCM(分解质因子)
- Uva10791 Minimum Sum LCM(数论、唯一分解定理)
- uva10791——Minimum Sum LCM(分解质因数)
- android获取system权限
- C++文件读写操作(二)逐字符读取文本和逐行读取文本
- JSONObject.toString() 中的各个字段按顺序输入
- C++文件读写操作(三)如何统计文本的行数及如何读取文件某一行内容
- SVN安装配置与使用
- uva10791 - Minimum Sum LCM
- C++文件读写操作(四)读取文件数据到临时数组
- openCV2使用指针的方式遍历图像image.ptr
- 推荐一个思维导图工具 xmind
- Android TCP/IP 发送接收16进制数据
- Linux Crontab 定时任务 命令详解 <重启服务器,同步时间等等>
- CSS文本溢出用省略号代替
- Activity与Service通信之BroadcastReceive
- date 命令的一些用法