大数问题+最小公倍数
发布时间:2020-12-14 04:09:15 所属栏目:大数据 来源:网络整理
导读:为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。 但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。 事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。 我们希望寻找到能除尽1至n的的每个数字的最小整数。 不要小看这
#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; } }(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |