加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数问题+最小公倍数

发布时间:2020-12-14 04:09:15 所属栏目:大数据 来源:网络整理
导读:为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。 但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。 事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。 我们希望寻找到能除尽1至n的的每个数字的最小整数。 不要小看这



为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。
但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。
事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。


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


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


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


例如:
用户输入:
6
程序输出:
60


用户输入:
10
程序输出:
2520


#define base 10000

int a[101]; int b[100]; void yufen(int n); void output(int n); int cheng(int n); void main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) a[i] = i; yufen(n); output(cheng(n)); } void yufen(int n) ? //约分 { int i,j; for(i=2;i<=n;i++) for(j=i+1;j<=n;j++) if(a[j]%a[i]==0) a[j]/=a[i]; } void output(int n) { int num=1; for(int i=n;i>=0;i--) if(b[i]) printf("%d",b[i]); else printf("0000"); printf("n"); } int cheng(int n) ? ?//每个约分后的数字相乘 { int i,j; b[0]=1; ? ? ?//大数初始值为1 for(i=2;i<=n;i++) { int num=0; for(j=0;j<100;j++) ?//大数相乘 { num += a[i]*b[j]; b[j] = num%base; num /= base; } } for(j=99;j>=0;j--) ?//查找最高位 { if(b[j]!=0) return j; } }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读