连续数的公倍数 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。
/* 连续数的公倍数
为什么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*/
import java.math.BigInteger;
import java.util.Scanner;
public class 连续数的公倍数 {// 得到最大公约数(辗转相除)public static BigInteger gdc(BigInteger m,BigInteger n) {BigInteger r = m.mod(n);while(r.compareTo(BigInteger.ZERO)!=0){m = n;n = r;r = m.mod(n);}return n;}public static BigInteger f(BigInteger m,BigInteger n){if(n.compareTo(BigInteger.ONE)==0){return m; // n到最后}else{m = m.multiply(n).divide(gdc(m, n)); // 得到最小公倍数return f(m,n.subtract(BigInteger.ONE));}}public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("输入的 n (n<100)");BigInteger m = scan.nextBigInteger();System.out.println(f(m,m.subtract(BigInteger.ONE)));}
}
运行结果:
输入的 n (n<100)
100
69720375229712477164533808935312303556800
方法二:
import java.math.BigInteger;public class 连续公倍数 {// 求能除尽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 = i + 1; j <= n; j++) {if(x[j] % x[i]==0) x[j] = x[j]/x[i]; // 填空1}}BigInteger m = BigInteger.ONE;for (int i = 2; i <= n; i++) {m = m.multiply(BigInteger.valueOf(x[i])); // 填空2}return m;}public static void main(String[] args) {System.out.println(f(100));}
}
运行结果:
69720375229712477164533808935312303556800
连续数的公倍数 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。相关推荐
- 两年数模路,一点小感触…
按:写于四年之前~ 前些时日小白给我打电话,说市场部的学弟准备参加mcm,想问点问题.我才猛然想起自己还参加过那么几次,也无怪乎天纯妹妹总给我发四字短信"建模先锋",甚是有聊.去年 ...
- hdu 5247 找连续数(思维)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5247 找连续数 Time Limit: 2000/1000 MS (Java/Others) M ...
- 统计数列中是连续数的个数
数据库环境:SQL SERVER2008R2 今天在群里看到一位网友提的需求,要求统计一组数据中前3位是连续数的个数,具体看贴图. 实现这个需求蛮简单的,说下我的思路: 取前3位,然后减去123,再和 ...
- hdu5247找连续数(打表)
题意(中问题直接粘题意吧) 找连续数 Problem Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是否 ...
- 2015年百度之星初赛(1) --- B 找连续数
找连续数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 4万次下载,我的这本电子书连续数月蝉联阿里云下载榜冠军!!!
初学Java的你还在烦恼不知道怎么去学,学习什么内容吗? 那么多的技术书籍是否已经让你无从下手? 别急,这就附上一份完整的Java学习路径.从头开始,给你一个体系化的学习方案. 结合作者(其实就是我) ...
- 数组系列—连续数中寻找缺失的数字
连续数中寻找缺失的数字 通过散列表实现: public static void find(int[] array){Hashtable<Integer,Integer> hasht=new ...
- 编程实现:从字符中获取连续数组序列,如字符串a1dl2iad9j3la5kudp7u9pn4blj8ap5u3e6ml9a中可以得到的连续数字序列为1234556.【注】:只考虑一位,因此最长的数
编程实现:从字符中获取连续数组序列,如字符串"a1dl2iad9j3la5kudp7u9pn4blj8ap5u3e6ml9a"中可以得到的连续数字序列为1234556.[注]:只考 ...
- C# 利用linq获取一组数中几个连续数中最大的一个数字
提供一个数组,其中部分数据是连续的,比如0~20的一组数据,其中少了一个数,假设少了11,那么连续中最大的数字就是10, 假如数组不是从0开始,假设是3~20,中间少了1个数,假如少了8,那么连续中最 ...
最新文章
- SQL Server 多实例下的复制
- MongoDB 基础用法及学习笔记
- JS实现倒计时三秒钟跳转到新的页面
- python怎么做乘法表_python怎么写乘法表
- python循环语句知识点_Python for 循环语句【每日一个知识点第115期
- java dateutils_Java DateUtils java时间工具类 kaki的博客
- springMVC rest风格
- 分布式事务 - 如何解决分布式事务问题?
- 钉钉小程序使用vant_高效钉钉小程序开发丨详解Hello,dingtalk
- 关于Microsoft Enterprise Library的介绍
- php指定时间 n天,PHP实现指定时间的n月之前的这一天的两种算法
- 超详细的Python实现百度云盘模拟登陆(模拟登陆进阶)
- 基于echarts+html+css+jq的数据可视化大屏展示炫酷看板[附源码]
- android+微博点赞动画,模仿微博点赞动画
- The coordinates or measures are out of bounds.
- 计算机可能发科学,行测真题_随着科学技术的进步,电脑的问世让人类制造这样的机器“耳朵”成为可能...
- 此时流泪,彼时花开。。。。
- Hbuilder如何替换选中代码快捷键
- 不能同吃的食物组合(你知道吗?)
- 快慢缓急总相宜|ONES 人物
热门文章
- 基于主从博弈理论的共享储能与综合能源微网优化运行研究
- 1152 最大值和最小值
- springboot el表达式
- 激活UltraEdit 的方法
- vs2013建立html页面,使用 Visual Studio 2013 创建基本 ASP.NET 4.5 Web 窗体页
- 漫画赏析:Linux 内核到底长啥样
- php通过Imagick将PDF转换成PNG
- AMESIM学习——弹簧阻尼器小球位置控制Amesim-Simulink联合仿真
- java replaceall正则_String.replaceAll方法详析(正则妙用)
- highcharts 点击事件