gpt4 book ai didi

java - N 以下所有 3 或 5 的倍数之和。 Project Euler

转载 作者:行者123 更新时间:2023-12-02 04:33:12 24 4
gpt4 key购买 nike

所以我正在做 Project Euler 挑战,但我陷入了第一个挑战,我使用 Java 作为 pl。例如,如果我们必须列出 10 以下的所有 3 或 5 的倍数自然数,我们会得到 3、5、6 和 9。这些倍数的总和是 23。我们必须找到 N 以下所有 3 或 5 的倍数之和。

我的代码可以在 Eclipse 上运行,但我得到“很好的尝试,但您没有通过此测试用例。”使用 stdout :无响应,当我提交代码时,我在所有测试用例上都得到错误答案,这是代码:

public class Solution {
public static void main(String[] args) {
for (int j = 0; j < args.length; j++) {
int N = Integer.parseInt(args[j]);
if (Somme(N) != 0) {
System.out.println(Somme(N));
}
}
}

public static int Somme(int Nn) {
int s = 0;
for (int i = 0; i < Nn; i++) {
if (((i % 3) == 0) || ((i % 5) == 0)
&& !(((i % 3) == 0) && ((i % 5) == 0))) {
s = s + i;
}
}
return (s);
}
}

更新:所以,我看了更多,结果发现这应该是这样的:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution{
public static void main(String[] args) throws IOException {


BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
int Nbr = Integer.parseInt(line);


for(int j=0; j<Nbr;j++)
{
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
String line2 = br2.readLine();
String[] numbers = new String[Nbr];
numbers[j]= line2;
System.out.println(Somme(Long.parseLong(numbers[j])));
}

}


public static long Somme(long Nn) {
long s = 0;
for (int i = 0; i < Nn; i++) {
if (((i % 3) == 0) || ((i % 5) == 0)) {
s = s + i;
}
}
return (s);
}

}

现在剩下的唯一问题是我希望它能够读取所有数字然后显示总和,现在它读取一个数字并在其后面显示总和,有什么想法吗?

最佳答案

您正在跳过一些不应该跳过的数字。

if (((i % 3) == 0) || ((i % 5) == 0)
&& !(((i % 3) == 0) && ((i % 5) == 0)))

此语句表示:i 必须能被 35 整除,并且不能被 3 整除> 和 5。改写为:i 必须能被 35 整除,但不能同时被它们整除。只需删除第二行就可以了。

关于java - N 以下所有 3 或 5 的倍数之和。 Project Euler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com