问题叙述如下:
“2520是最小的数能够整除1到10,求能被1到20所整除的最小的数?”
代码如下:
/**
* 数字i从m到n,遍历,如果i不能被result整除,我们就将i除以i与result的最大公约数,并与当前result想乘
*
*/
private static int getNumber(int m, int n) {
int result = n;
for (int i = n - 1; i >= m; i--) {
if (result % i != 0) {
result *= i/gcd(result,i);
}
}
return result;
}
/**
* 最大公约数:欧几里德算法 定理:gcd(a,b) = gcd(b,a mod b)
*
* @param a
* @param b
* @return
*/
private static int gcd(int a, int b) {
if (b != 0)
return gcd(b, a % b);
else
return a;
}
调用getNumber(1,20)即可得到答案232792560。
由于在此用到最大公约数,所以在下面给出了一些实现。
/**
* 最大公约数:欧几里德算法
* @param a
* @param b
* @return
*/
private static int gcd1(int a, int b) {
if (a > b) {
gcd1(b, a);
}
int temp = 0;
for (; b != 0;) {
temp = a % b;
a = b;
b = temp;
}
return a;
}
/**
* 最大公约数:Stein算法 gcd(ka,kb) = k gcd(a,b),也就是最大公约数运算和倍乘运算可以交换,
* 特殊的,当k=2时,说明两个偶数的最大公约数必然能被2整除
*
* @param a
* @param b
* @return
*/
private static int gcdByStein(int a, int b) {
if (a > b) {
gcdByStein(b, a);
}
if (b == 0) {
return a;
}
if (a % 2 == 0 && b % 2 == 0) {
return 2 * gcdByStein(a / 2, b / 2);//a,b都是偶数
}
if (a % 2 == 0) {
return gcdByStein(a / 2, b);//仅a为偶数
}
if (b % 2 == 0) {
return gcdByStein(a, b / 2);//仅b为偶数
}
return gcdByStein((a + b) / 2, (a - b) / 2);//a,b都是奇数
}
如果有其他的方法,也请贴出大家一起讨论。^_^
请不吝赐教。
@anthor ClumsyBirdZ
分享到:
相关推荐
以上就是关于“1000-4000能被7和17整除的数”这一编程问题所涉及的主要知识点,包括了编程语言基础、算法设计、界面交互等多个方面。通过这个小项目,可以锻炼编程者的逻辑思维能力和代码实现能力。
根据给定文件的信息,本文将探讨如何找到最小的正整数,该整数可以被1到20中的每一个数字整除。这个问题源自于一个著名的数学挑战项目——Project Euler中的问题5(Problem 5)。首先,我们将对问题进行简要概述,并...
标题 "求能整除3又能整除5的,在1-100之间" 描述的是一个编程问题,要求在1到100的整数范围内找出所有既能被3整除也能被5整除的数,并对这些数进行特定的字符串输出。描述中的"FLIPFLOP"、"FLIP"和"FL0P"是根据数是否...
1. 能被某个数整除的定义:如果一个数可以被另一个数整除,那么这个数就是另一个数的倍数。例如,能被2整除的数就是2的倍数,能被3整除的数就是3的倍数,以此类推。 2. 能被某个数整除的判断方法:判断一个数能否被...
用java编写的求1到100以内的前5个可以被3整除的数字
1至100能被7整除的数,C#小练习
Java程序,1到100可以被2,3,5整除的数
内容概要:输入一个数n,输出1——n之间不能被5整除的数,一行5个数(JAVA) 适用人群:新手初学者小白 学到什么:输入输出语句、for循环控制语句、if条件控制语句、\t制表符、自增/自减的运用 、赋值语句和判断语句...
C语言编写输出2到100不能同时被2或5整除的数,练习continue的使用区分break。
通过实际编写并运行这段代码,学生们能够直观地看到100到600之间所有能被8整除的数,这有助于巩固理论知识并提升问题解决能力。 在实际应用中,这样的练习还可以扩展到其他数字和条件,例如找出能被多个数字整除的...
求100—200之间不能被3整除的数 C++语言程序设计(第3版)郑莉等编著
1-999中能被3整除,且至少有一位数字是5的所有整数,经典例题
这个实验"实验1_被3整除_被7整除_被5整除_"就是这样的一个例子,它要求我们编写程序来接收用户输入的一个整数,并确定这个数是否能被3、5或7整除。这涉及到基本的算术运算和条件判断语句,是计算机科学基础课程中...
document.write(b + "到" + a + "之间能被5整除的数的和是:"); document.write(n + " "); ``` - 使用`document.write`方法将结果输出到HTML页面上。 - 第一行输出描述性文本,第二行输出计算结果`n`。 ### 三、...
标题中的“输入两个数,输出在它们之间所有能被3整除的数”是一个典型的编程问题,主要涉及C语言的基础语法、循环结构以及条件判断。接下来,我们将详细讲解这个任务的相关知识点。 首先,C语言是一种高级编程语言...
1_求1到1000中,能被7整除的数的个数.c
js计算出1000内可以被3,5,7整除的数并输出这些数和数量到网页中
本次讨论的主题围绕“能被3,5,7整除的数”,这不仅是一个简单的数学问题,更是在编程中检验一个数字是否同时满足多个条件的经典案例。下面,我们将深入解析这个主题,包括其数学原理、C++实现细节以及代码优化策略。...
用sql语句实现求100以内能被5整除的和,简单易懂,思路清晰,特别适合初学者的学习
自己写的,求被13整除的数,这是个自己写的小例子。