Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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 高可除三角数(ProjectEular)?_Java - Fatal编程技术网

Java 高可除三角数(ProjectEular)?

Java 高可除三角数(ProjectEular)?,java,Java,三角形数序列是通过添加自然数生成的。所以第七个三角形的数字是1+2+3+4+5+6+7=28。前十个任期为: 1、3、6、10、15、21、28、36、45、55 让我们列出前七个三角形数字的系数: 1:1 3: 1,3 6: 1,2,3,6 10: 1,2,5,10 15: 1,3,5,15 21: 1,3,7,21 28: 1,2,4,7,14,28 我们可以看到28是第一个有超过五个除数的三角形数 第一个有500个以上除数的三角形数的值是多少 我用java编写了这段代码。我没有看到任何错误

三角形数序列是通过添加自然数生成的。所以第七个三角形的数字是1+2+3+4+5+6+7=28。前十个任期为:

1、3、6、10、15、21、28、36、45、55

让我们列出前七个三角形数字的系数:

1:1 3: 1,3 6: 1,2,3,6 10: 1,2,5,10 15: 1,3,5,15 21: 1,3,7,21 28: 1,2,4,7,14,28 我们可以看到28是第一个有超过五个除数的三角形数

第一个有500个以上除数的三角形数的值是多少

我用java编写了这段代码。我没有看到任何错误,但它返回我给count2的任何值。原因是什么

public static void main(String[] args) {
    System.out.println(number());
}


public static boolean triangle(int number) {
    long sum = 0l;
    for (int i = 0; i < number; i++) {
        sum += i;
        if ((((number + 1) * number) / 2) != sum)
            return false;
    }
    return true;
}


public static int triangular(int number) {
    int count = 0;
    for (int i = 1; i <= number; i++) {
        if (number % i == 0) {
            count++;
        }

    }
    return count;
}

public static String number() {
    int count2 = 1;

    while ((triangle(count2) == true) && (triangular(count2) == 501)) {
        count2++;
    }
    return Integer.toString(count2);
}
while循环的条件导致它提前退出。您应该反转条件,以便继续迭代,直到满足这些条件。此外,你得到的数字可能有超过501个因素,因此你应该考虑到这种可能性

while ((triangle(count2) == false) || (triangular(count2) < 501)) {
    count2++;
}
正如David Conrad在原始帖子中的评论所提到的,你应该在三角形中把你的三角形数从1加到n,或者只使用

您的方法还可以从使用while循环中获益。

while循环的条件会导致它提前退出。您应该反转条件,以便继续迭代,直到满足这些条件。此外,你得到的数字可能有超过501个因素,因此你应该考虑到这种可能性

while ((triangle(count2) == false) || (triangular(count2) < 501)) {
    count2++;
}
正如David Conrad在原始帖子中的评论所提到的,你应该在三角形中把你的三角形数从1加到n,或者只使用


使用。

三角形不起作用,您的方法也可能从中受益;求和永远不会到达三角形数,因为你从0到n-1求和,而不是从1到n,但是如果你知道计算三角形数的闭合形式,为什么你还要尝试从1到n求和?你计算因子的功能效率很低,在数量上你测试每个数字;为什么不只测试三角形数字?另外,你应该检查超过五百个除数,而不是五百零一个除数。还有,水桶说了什么我认为用蛮力解决这个问题是个坏主意。我打赌有一些简单的方法来计算答案,即使是对于一些非常高的输入数。@Amongalen可能有,但Project Euler中的大多数问题(如果不是所有的话)都需要编程技巧来解决。三角形不起作用;求和永远不会到达三角形数,因为你从0到n-1求和,而不是从1到n,但是如果你知道计算三角形数的闭合形式,为什么你还要尝试从1到n求和?你计算因子的功能效率很低,在数量上你测试每个数字;为什么不只测试三角形数字?另外,你应该检查超过五百个除数,而不是五百零一个除数。还有,水桶说了什么我认为用蛮力解决这个问题是个坏主意。我打赌有一些简单的方法来计算答案,即使是对于一些非常高的输入数。@Amongalen可能有,但Project Euler中的大多数问题(如果不是所有的话)都需要编程技巧来解决。