Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何在不使用暴力的情况下使用Euler 5?_Java_Algorithm_Brute Force - Fatal编程技术网

Java 我如何在不使用暴力的情况下使用Euler 5?

Java 我如何在不使用暴力的情况下使用Euler 5?,java,algorithm,brute-force,Java,Algorithm,Brute Force,在我目前的工作中,我有一个“有效”的解决方案。它适用于较小的数字(问题中的示例),但不适用于实际的问题,因为我是蛮力地强迫它,程序不会完成 以下是问题的解释: 2520是最小的数字,可以被1到10之间的每一个数字除,没有任何余数 可被1到20的所有数字均匀除1的最小正数是多少 1:可除,无余数 这是我目前的代码: package Euler; public class Euler5 { public static void main(String[] args) { int de

在我目前的工作中,我有一个“有效”的解决方案。它适用于较小的数字(问题中的示例),但不适用于实际的问题,因为我是蛮力地强迫它,程序不会完成

以下是问题的解释:

2520是最小的数字,可以被1到10之间的每一个数字除,没有任何余数

可被1到20的所有数字均匀除1的最小正数是多少

1:可除,无余数

这是我目前的代码:

package Euler;

public class Euler5 {

  public static void main(String[] args) {
    int desiredNumber = 20;
    boolean exitLoop = false;
    long counter = 1;

    while(exitLoop == false) {
        long loopCounter = 0;
        for(int i=1; i<=desiredNumber; i++) {
            if(counter % i == 0) {
                loopCounter++;
            }
        }
        if(loopCounter == desiredNumber) {
            exitLoop = true;
            System.out.println(counter);
        }
        counter++;
      }
  }
}
package;
公共类Euler5{
公共静态void main(字符串[]args){
int desiredNumber=20;
布尔exitLoop=false;
长计数器=1;
while(exitLoop==false){
长循环计数器=0;

对于(int i=1;i您正在寻找的数字是数字1,2,3,…,20中的


通过将每个数字拆分为其素因子的乘法(对于小数字来说很容易),找到LCM是相当容易的。

您要查找的数字是数字1、2、3、…、20的


通过将每个数字拆分为其素数因子的乘法(对于小数字来说很容易),找到LCM是相当容易的。

你没有计算机来回答这个问题。看:如果一个数字可以被1到20之间的每个数字除,这意味着它应该是相应幂的素数的乘法:

   2**4 (from 16) 
   3**2 (from 9)
   5
   7
  11 
  13
  17
  19
所以解决办法是

  16 * 9 * 5 * 7 * 11 * 13 * 17 * 19 == 232792560
由于答案相当大,我怀疑暴力是否是一种合理的方法

一般情况下(对于某些
n>=2
),找出所有不超过n的素数:

  2, 3, ..., m (m <= n)


你没有计算机来回答这个问题。看:如果一个数字可以被1到20的每一个数字除,这意味着它应该是相应幂的素数的乘法:

   2**4 (from 16) 
   3**2 (from 9)
   5
   7
  11 
  13
  17
  19
所以解决办法是

  16 * 9 * 5 * 7 * 11 * 13 * 17 * 19 == 232792560
由于答案相当大,我怀疑暴力是否是一种合理的方法

一般情况下(对于某些
n>=2
),找出所有不超过n的素数:

  2, 3, ..., m (m <= n)


Euler 5是projecteuler.net上的一个问题您应该使用solution@Cflo请在此处附上Euler 5的问题陈述,以便可能回答问题的人无需离开现场。您可以使用一张纸、一支笔(或一支铅笔)解决该问题Euler 5是projecteuler.net上的一个问题,您应该使用它来进行有效的计算solution@Cflo请在此处附上Euler 5的问题陈述,以便可能回答问题的人无需离开现场。您可以使用一张纸、一支笔(或一支铅笔)解决该问题还有一个计算器。非常感谢,但是欧拉问题(至少对我来说)的重点是获得编码技能:p@Cflo:对于编码技巧,请尝试实现我的算法(请参阅我的编辑作为可能的解决方案)。Euler项目的问题很有趣:示例很容易验证(包括暴力)但主要问题值得详细阐述。非常感谢这一点,然而Euler问题(至少对我来说)的重点是获得编码技能:p@Cflo:对于编码技巧,请尝试实现我的算法(请参阅我的编辑作为可能的解决方案)。Euler项目的问题很有趣:示例很容易验证(包括暴力)但主要问题值得详细阐述。