公倍数

来源:互联网 发布:外卖订餐软件潍坊 编辑:程序博客网 时间:2024/04/27 16:15

为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。

但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。

事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。

 

我们希望寻找到能除尽1至n的的每个数字的最小整数。

 

不要小看这个数字,它可能十分大,比如n=100,则该数为:

69720375229712477164533808935312303556800

 

请编写程序,实现对用户输入的 n(n<100)求出1~n的最小公倍数。


参考代码:

#include <stdio.h>#include<stdlib.h>#define N 100000int main(int argc, char* argv[]){int n,i,j,mul=1,c,k;int *a,b[N]={0};scanf("%d",&n);a=(int*)malloc(sizeof(int)*(n+1));for(i=1;i<=n;i++){a[i]=i;}for(i=2;i<=n;i++){for(j=i+1;j<=n;j++){if(a[j]%a[i]==0)a[j]/=a[i];}}b[0]=1;c=0;k=1;for(i=2;i<=n;i++){for(j=0,c=0;j<k;j++){b[j]=b[j]*a[i]+c;c=b[j]/10;b[j]%=10;}if(c>0&&j<N){b[k++]=c;}}i=N-1;while(b[i--]==0);for(++i;i>=0;i--)printf("%d",b[i]);return 0;}


测试结果:



1 0