您的位置:首页 > 其它

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: