码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 10791 最小公倍数的最小和(唯一分解定理)

时间:2017-04-05 16:27:43      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:题意   get   put   href   ret   pac   ref   code   分解   

https://vjudge.net/problem/UVA-10791

题意:

输入整数n,求至少两个正整数,使得它们的最小公倍数为n,且这些整数的和最小。

 

思路:

首先对n进行质因数分解,举个例子来说,12=2×2×3,最小和为7,也就是4和3,相同质因子必须放在一起,也就是说这里的2个2必须合在一起变成4,不然2和3会有更小的公倍数6。

 1 #include <iostream>  
 2 #include <cstring>  
 3 #include <algorithm>   
 4 #include <vector>
 5 #include <queue>
 6 #include <cmath>
 7 using namespace std;
 8 
 9 long long n;
10 
11 int main()
12 {
13     //freopen("D:\\input.txt", "r", stdin);
14     int kase = 0;
15     while (~scanf("%d", &n) && n)
16     {
17         int temp;
18         int ret = 0;
19         long long ans = 0;
20         int m = sqrt(n + 0.5);
21         for (int i = 2; i <= m && n > 1; i++)
22         {
23             if (n%i == 0)
24             {
25                 temp = 1;
26                 while (n%i == 0)
27                 {
28                     temp *= i;
29                     n /= i;
30                 }
31                 ans += temp;
32                 ret++;
33             }
34         }
35         if (n > 1)
36         {
37             ans += n;
38             ret++;
39         }
40         while (ret < 2)
41         {
42             ans++;
43             ret++;
44         }
45         printf("Case %d: %lld\n", ++kase, ans);
46     }
47 }

 

UVa 10791 最小公倍数的最小和(唯一分解定理)

标签:题意   get   put   href   ret   pac   ref   code   分解   

原文地址:http://www.cnblogs.com/zyb993963526/p/6668979.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!