寻找能除尽1至n的每个数字的最小整数
需积分: 10 126 浏览量
更新于2024-01-17
收藏 155KB DOC 举报
软件设计大赛中C/C 本科组关于程序填空的一些典型题目收录:
11. 公倍数
为什么 1 小时有 60 分钟,而不是 100 分钟呢?这是历史上的习惯导致。但也并非纯粹的偶然:60 是个优秀的数字,它的因子比较多。事实上,它是 1 至 6 的每个数字的倍数。即 1,2,3,4,5,6 都是可以除尽 60。
我们希望寻找到能除尽 1 至 n 的的每个数字的最小整数。不要小看这个数字,它可能十分大,比如 n=100, 则该数为:69720375229712477164533808935312303556800。
为此,有必要使用 BigInteger 来记录这样的大数。请阅读下面的代码,填写缺失的部分(下划线部分)。注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。直接写在题面中不能得分。
```java
import java.math.BigInteger;
public class My1{
// 求能除尽 1~n 每个数字的最小整数
public static BigInteger f(int n){
int[] x = new int[n + 1];
for(int i=1; i<=n; i++) x[i] = i;
for(int i=2; i<=n; i++){
for(int j=2; j<x.length; j++){
if(x[j]%i == 0){
int tmp = x[j]/i;
int p = i;
while(tmp%i == 0){
tmp /= i;
p *= i;
}
x[j] = p;
}
}
}
BigInteger result = new BigInteger("1");
for(int i=2; i<x.length; i++){
result = result.multiply(BigInteger.valueOf(x[i]));
}
return result;
}
}
```
以上代码中,首先定义了一个长度为 n+1 的数组 x,然后依次将1至n的数字存入数组中。接着利用两个 for 循环对数组进行遍历,寻找每个数字的因子,并将数组中的数字进行更新,最后将数组中的数相乘得到最终结果。需要填写的部分在代码中已经用“…”表示了。
2022-06-05 上传
2009-06-08 上传
2012-12-10 上传
2024-05-16 上传
u010171866
- 粉丝: 0
- 资源: 1
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析