公倍数
2015-06-03 19:51
429 查看
为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。
但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。
事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。
我们希望寻找到能除尽1至n的的每个数字的最小整数。
不要小看这个数字,它可能十分大,比如n=100,则该数为:
69720375229712477164533808935312303556800
请编写程序,实现对用户输入的 n(n<100)求出1~n的最小公倍数。
参考代码:
测试结果:
但也并非纯粹的偶然: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 100000 int main(int argc, char* argv[]) { int n,i,j,mul=1,c,k; int *a,b ={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; }
测试结果:
相关文章推荐
- TP 权限判断
- 数据流传输
- HTML总结
- iOS开发:获取一个视频、音频文件的播放时长
- C#Socket服务器开发(Unity)
- MFC 字符串类CString 源代码
- poj 3250 Bad Hair Day 单调栈
- 第十一周项目-1.2
- DM8168 CameraLink 视频噪点问题解决
- /etc/fstab
- 如何使用NODEJS+REDIS开发一个消息队列
- poj 3734 Blocks
- MFC 字符串类CString 源代码
- 阅读《http权威指南》
- 深入理解tomcat读书笔记
- linux sar命令详解
- 物流运交管理系统 派车作业
- servlet项目出现405错误
- 实验三 Java敏捷开发与xp实现
- iOS 报错 Assert Catalog Complier Error Fail to write PNG data for the launach image......