ACM算法最小公倍数
2016-05-08 22:10
239 查看
求最大公约数的算法小结:此算法属于数论,也基本的算法之一,十分重要,今天在化工大学比赛差点就废在这上面
(1)辗转相除法:
#include<stdio.h>
intmain(void)
/*
辗转相除法求最大公约数 */
{
int m,n, a, b, t, c;
printf("Input two integer numbers:\n");
scanf("%d%d", &a, &b);
m=a; n=b;
while(b!=0)
/* 余数不为0,继续相除,直到余数为0
*/
{c=a%b; a=b;
b=c;}
printf("The largest common divisor:%d\n", a);
printf("The least common multiple:%d\n", m*n/a);
}
(2)穷举法
例题:http://acm.hdu.edu.cn/showproblem.php?pid=2028
穷举法(此方法虽然容易,但是容易超时,最好的还是辗转相除)
#include<iostream>
using namespace std;
int main(void)
{
intn,i,j,max,a[100];
while(cin>>n)
{
for(i=0;i<n;++i)
{
cin>>a[i];
max=a[0];
if(a[i]>max)
max=a[i];
}
for(j=max;;++j)
{
for(i=0;i<n;++i)
{
if(j%a[i]!=0)
break;
}
if(i==n)//个人猜测可能因为j无上限,所以引起上溢,导致i上溢,需要考虑此情况;
break;
}
cout<<j<<endl;
}
}
求最大公约数的算法小结:此算法属于数论,也基本的算法之一,十分重要,今天在化工大学比赛差点就废在这上面
(1)辗转相除法:
#include<stdio.h>
intmain(void)
/*
辗转相除法求最大公约数 */
{
int m,n, a, b, t, c;
printf("Input two integer numbers:\n");
scanf("%d%d", &a, &b);
m=a; n=b;
while(b!=0)
/* 余数不为0,继续相除,直到余数为0
*/
{c=a%b; a=b;
b=c;}
printf("The largest common divisor:%d\n", a);
printf("The least common multiple:%d\n", m*n/a);
}
(2)穷举法
例题:http://acm.hdu.edu.cn/showproblem.php?pid=2028
穷举法(此方法虽然容易,但是容易超时,最好的还是辗转相除)
#include<iostream>
using namespace std;
int main(void)
{
intn,i,j,max,a[100];
while(cin>>n)
{
for(i=0;i<n;++i)
{
cin>>a[i];
max=a[0];
if(a[i]>max)
max=a[i];
}
for(j=max;;++j)
{
for(i=0;i<n;++i)
{
if(j%a[i]!=0)
break;
}
if(i==n)//个人猜测可能因为j无上限,所以引起上溢,导致i上溢,需要考虑此情况;
break;
}
cout<<j<<endl;
}
}
相关文章推荐
- 网站自动跳转
- javascript模块化开发编程
- 20145319 第十周学习总结
- 云计算网络
- Cent OS 7.x下PHP JSP共存(使用Apache进行反向代理-vhost)
- [置顶] 【Software】动软代码生成器
- 对象及变量的并发访问一
- 20150403--RBAC+首页登录-02
- I/O流——字符流
- 20145307第十周JAVA学习报告
- solr学习之六--文本分析
- B - Networking——POJ
- 20145310《Java程序设计》第5次实验报告
- Android基础知识:Activity生命周期和Intent用法
- 省市区三级联动之-------spinner
- 第一讲开发前的准备工作
- 关于Cooperation.GTST
- 20145310 《Java程序设计》第10周学习总结
- 指针理解
- UESTC - 1034 AC Milan VS Juventus (模拟&博弈)