Java N以下3或5的所有倍数之和。欧拉投影

Java N以下3或5的所有倍数之和。欧拉投影,java,sum,multiplication,challenge-response,Java,Sum,Multiplication,Challenge Response,所以我在做ProjectEuler挑战,我被困在第一个挑战中,我使用Java作为pl。例如,如果我们必须列出10以下的所有自然数,它们是3或5的倍数,我们得到3、5、6和9。这些倍数之和是23。 我们必须求N以下3或5的所有倍数之和 我的代码可以在Eclipse上运行,但我得到了“很好的尝试,但是您没有通过这个测试用例”。使用stdout:No Response,当我提交代码时,我在所有测试用例上都得到了错误的答案,代码如下: public class Solution { public

所以我在做ProjectEuler挑战,我被困在第一个挑战中,我使用Java作为pl。例如,如果我们必须列出10以下的所有自然数,它们是3或5的倍数,我们得到3、5、6和9。这些倍数之和是23。 我们必须求N以下3或5的所有倍数之和

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

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);
    }
}
公共类解决方案{
公共静态void main(字符串[]args){
对于(int j=0;j
更新: 所以,我看了更多,结果发现这是应该怎么做的:

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);
}
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
公共类解决方案{
公共静态void main(字符串[]args)引发IOException{
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
String line=br.readLine();
int Nbr=整数.parseInt(行);

对于(int j=0;j您正在跳过一些不应跳过的数字

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

这句话说:
i
必须能被
3
5
整除,并且不能被
3
5
整除。换言之:
i
必须能被
3
5
整除,但不能同时被两者整除。只要删除第二行,它就会起作用。

图灵85所说的话和wazaaaap。 Project Euler的示例都表明它不接受不同的输入。您只需要生成正确的输出。因此,将
Integer.parseInt(args[j]);
替换为
Integer.parseInt(1000);
为了补充图灵所说的内容,解决方案应遵循以下psuedocode:

target=999
sum=0
for i=1 to target do
if (i mod 3=0) or (i mod 5)=0 then sum:=sum+i
output sum

使用
for
循环,您可以获得从
0
1000
的所有数字,并且通过使用
if
条件,您可以获得所需的数字,即
3
5
的倍数,将它们相加即可得到最终输出,如下所示:

public class SUM_3_5{

    public static void main(String []args) {
        int sum=0;
        int i;

        for(i=0;i<1000;i++)
        {
             if(i%3==0||i%5==0)
                 sum=sum+i;
        }

        System.out.println(sum);
    }
}
public class SUM\u 3\u 5{
公共静态void main(字符串[]args){
整数和=0;
int i;

对于(i=0;i检查角落案例!如果输入大于int的大小??我不确定我是否理解您的意思,我是否应该控制用户输入?您是否应该使用标准输入?不作为参数?为什么要排除15的倍数?@Hadh抱歉,没有足够仔细地阅读问题。hackerrank从System.in.提供输入,并且非常具体地说明了如何进行输入(阅读他们的手册),当您在每种情况下计算两次总和时,也可能存在超时问题。另一个问题是整数溢出,请检查问题说明以了解可能的输入大小。
integer.parseInt(1000);
?就
1000
?OP如何启动程序无关紧要。如果他/她希望将参数作为命令行参数输入,这是完全正确的。结果不会受到影响(除非命令行参数将超过
整数.MAX_值,但这不是练习的目标)不,你看在第一行你插入了多少个整数,例如,如果我有10和100,我想知道10下3和5的倍数和100下的和,输入应该是:2 10 100输出:23 2318是的,我做的那行没有做任何事情,我想我仍然有同样的问题这就是@zubergu所说的,系统中的一些东西。问题是将3或5的所有倍数相加。使用FOR循环,我们可以得到0到1000之间的所有数字,通过使用IF条件,我们得到所需的数字,即3,5的倍数,相加得到最终的输出。