UVa10791
来源:互联网 发布:php magic quotes gpc 编辑:程序博客网 时间:2024/05/22 08:04
输入n,求两个正整数,是他们的最小公倍数为n,并且是其中最小的一组,输出他们的和。
唯一分解定理
任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积
例如 36 = 2 * 2 * 3 * 3
如果两个数最小公倍数是36,那么这两个数必须互质,像6 * 6就是不符合规定的,因为最小公倍数为6,那么我们把相同的因数组合,这样的话就一定是互质的了。
2*2 和 3*3
有了这个思想,我们需要一个for循环遍历一下因数,把相同的因数提取,直到
这里还有个坑,就是如果n是一个质数的话,或者是个1,要另外判定。
#include<iostream>#include<cmath>#define MAXN 1000#define ll long longusing namespace std;ll a[MAXN];ll kase; void disassembly(ll n) { kase = 0; ll index = (ll)sqrt(n + 0.5); for(ll i = 2; i <= index; i++) { if(!(n%i)) {//如果是因数的话就进入 ll vis = 1; while(!(n%i)) {//把所有能提取的因数i全部提取 vis *= i; n /= i; } a[kase++] = vis;//放进一个数组里 } } if(n > 1) a[kase++] = n;//把剩下的质数加上,可能是本身,可能是别的质数}int main () { ll n, q = 0; while(cin >> n && n) { disassembly(n); ll ans = 0; if(!kase || kase == 1) {//如果是1的话,和是质数的时候答案是一样的 ans = n + 1; }else { for(ll i = 0; i < kase; i++) { ans += a[i]; } } printf("Case %lld: %lld\n", ++q, ans); } return 0;}
阅读全文
0 0
- uva10791
- uva10791
- UVa10791
- uva10791(数论)
- 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 唯一分解定理
- UVA10791 Minimum Sum LCM
- Uva10791 质因数分解
- 周中训练笔记+Uva10791
- uva10791(唯一分解定理)
- UVA10791 Minimum Sum LCM 数论素因子
- UVA10791 Minimum Sum LCM 质因数分解
- uva10791 Minimum Sum LCM(唯一分解定理)
- 【Python 学习笔记】巧用list 实现100以内被3整除的数
- PHP导出word,CVS,PDF
- 基于pinpoint改造的一种方式的思考(1)--agent 添加代理层
- Vuex Demo 讲解
- connect()
- UVa10791
- Hadoop生态圈各组件的启动及关闭
- 初学mybatis1
- LocalStorage的简介(和cookie)
- Python 函数
- c++创建多级目录
- 误删JDK注册表或JDK卸载不干净
- Android自定义View基础部分
- Vue 组件库实践和设计