package com;
//为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致。
//但也并非纯粹的偶然:60是个优秀的数字,它的因子比较多。
//事实上,它是1至6的每个数字的倍数。即1,2,3,4,5,6都是可以除尽60。
//
//我们希望寻找到能除尽1至n的的每个数字的最小整数。
//
//不要小看这个数字,它可能十分大,比如n=100, 则该数为:
//69720375229712477164533808935312303556800
//思路:
/* 1、由于涉及的数会很大 , 使用大整数类型 BigInteger
* 2、用数组保存范围内的所有的值 1-n;
* 3、求所有数的最小公倍数;
* 4、两两数进行比较取每次结果的公约数;
* 5、将所有的值进行相乘;
*
*
* */
import java.math.BigInteger;
public class My1
{
// 求能除尽1~n 每个数字的最小整数
public static BigInteger f(int n)
{
int[] x = new int[n+1]; // 因为要包含 n 这个数字
//赋值
for(int i=1; i<=n; i++){
x[i] = i; //对数组元素进行赋值 1 - n
}
for(int i=2; i<n; i++)
{
for(int j=i+1; j<=n; j++)
{
//System.out.println(x[j]+"%"+x[i]+"="+x[j]%x[i]);
// 解析:相邻两个数进行比较:例如:3 和 2 如果:3 能被2整除,则 取而者得商替换 3 的值
if(x[j] % x[i]==0){
x[j]=x[j]/x[i];
}
}
//System.out.println("的值为:"+x[i]);
}
BigInteger m = BigInteger.ONE;//接收所有数的 积
for(int i=2; i<=n; i++)
{
m = m.multiply(BigInteger.valueOf(x[i]));
}
return m;
}
public static void main(String[] args)
{
System.out.println(f(3));
}
}
分享到:
相关推荐
用碾压法求出两个数的最大公因数,然后将剩下的分子连乘再乘以最大公因数即可获得最小公倍数
求最大公约数和最小公倍数. 相信你们会找到的。
输入两个数字,可以求这两个数字的最大公约数和最小公倍数。输入的两个数字之间用空格隔开。输入之后回车确定
Java练习题:输入两个正整数m和n,求其最大公因数和最小公倍数
能够实现..........绝对的,虽然有好几种方法但我就一种.是用的最小公倍数的定义做的!!!!
Java小程序,核心是欧几里德算法,策略是分治算法
Java求最大公约数、最小公倍数,输入两个正整数m和n,求其最大公约数和最小公倍数。最小公倍数可由原数除以最大公约数计算得到,这里使用了辗除法。
求多个数的最大公约数,最小公倍数以及hanks博士son问题,数论问题
求两个数的最小公倍数和最大公约数C++,编程环境在VS2010下以实验。
python 输入两个正整数计算最大公约数和最小公倍数 示例
C语言编程实现求两个数的最大公约数和最小公倍数C语言编程实现求两个数的最大公约数和最小公倍数C语言编程实现求两个数的最大公约数和最小公倍数C语言编程实现求两个数的最大公约数和最小公倍数C语言编程实现求两个...
今天在课堂上,老师讲解了如何求两个正整数c1和c2的最大公约数和最小公倍数。现在Hankson认为自己已经熟练地掌握了这些知识,他开始思考一个“求公约数”和“求公倍数”之类问题的“逆问题”,这个问题是这样的:已知...
基于FPGA开发板的两位数求最大公约数和最小公倍数的设计,该设计中利用辗转相减法求得公约数与公倍数,且两个数的数值可通过按键修改,设计灵活可靠。该设计基于vivado开发,并带有testbench文件,方便仿真学习。
关于如何求最大公约数和最小公倍数的c语言程序
C语言编程练习,需要使用手机APP:C4droid打开
最大公因数、最小公倍数PPT 具体内容见内。
c++求最大公因数和最小公倍数,利用最大公因数法求最小公倍数。
用LabVIEW求最大公约数和最小公倍数。可以自行选择数据。
利用Java从键盘输入两个整数,计算这两个数的最小公倍数和最大公因数并输出
计算最大公因数和最小公倍数