Least Common Multiple最小公倍数添加链接描述
1019题编程
结论:遇最小公倍数,想辗转相除法
1.使用辗转相除法要快速,节时。
#include<stdio.h>
int main(void)
{
int a[10010],b,i,t,m,n,z,gbs;
scanf("%d",&t);
while(t){
scanf("%d",&b);
for(i=0;i<b;++i){
scanf("%d",&a[i]);
}
gbs=a[0];
for(i=1;i<b;i++) {
m = gbs;
n = a[i];
while(z = m % n) {
m = n;
n = z;
}
gbs = gbs/ n * a[i];
}
printf("%d\n",gbs);
--t;
}
return 0;
}
2.用原理做题 ,数大耗时超时
#include<stdio.h>
int main()
{
int a[1000],b,i,n,gbs;
long long w;
scanf("%d",&n);
while(n){
scanf("%d",&b);
for(i=0;i<b;++i){
scanf("%d",&a[i]);
}
for(i=0;i<b-1;++i){
for(gbs=a[i];gbs<=(a[i]*a[i+1]);gbs++){
if(gbs%a[i]==0&&gbs%a[i+1]==0){
a[i+1]=gbs;
break;
}
}
}
w=a[b-1];
printf("%lld\n",w);
--n;
}
return 0;
}
//超时