最小公倍数
时间限制:
1000
ms
|
内存限制:
65535
KB
难度:
3
-
描述
-
为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。
我们希望寻找到能除尽1至n的的每个数字的最小整数m. -
-
输入
-
多组测试数据(少于500组)。
每行只有一个数n(1<=n<=100).
输出
- 输出相应的m。 样例输入
-
2 3 4
样例输出
-
2 6 12
来源
- 2011蓝桥杯
- 我的代码:
-
#include<iostream> using namespace std; #define N 101 int i,j; void prime(int div[]) { for(i=2;i if(!div[i]) for(j=i+i;j div[j]=1; } void flag(int res[][50],int div[]) { for(i=3;i { res[i][0]=1; int sum=0,k; for(j=2;j<=i;j++) { if(!div[j]) { intt=j; while(t<=i) { t*=j; for(k=0;k<=sum;k++) res[i][k]*=j; for(k=0;k<=sum;k++) if(res[i][k]>=10) { res[i][k+1]+=res[i][k]/10; res[i][k]%=10; if(k==sum)sum++; } } } } } } int main() { int n; int div[N]={1,1,0},res[N][50]={0}; prime(div); flag(res,div); while(cin>>n) { if(n==1||n==2) cout<<n<<endl; else { for(i=49;i>=0;i--) if(res[n][i]) break; for(j=i;j>=0;j--) cout<<res[n][j]; cout<<endl; } } return 0; }
-
-
多组测试数据(少于500组)。