所以我正在做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);
}}
现在唯一的问题是,我希望它能够读取所有的数字,然后显示总和,现在它读取一个数字,并在后面显示总和,有什么想法吗?
发布于 2015-07-02 07:25:31
您正在跳过一些不应该跳过的数字。
if (((i % 3) == 0) || ((i % 5) == 0)
&& !(((i % 3) == 0) && ((i % 5) == 0)))这条声明说:i必须能被3或5整除,而不能被3和5整除。重述:i必须能被3或5整除,但不能同时被这两个整除。只需删除第二行,它就可以工作了。
发布于 2015-07-02 07:31:29
我相信这是Turing85所说的和哇哇的结合。Project Euler的示例都表明它不需要不同的输入。您只需生成正确的输出。因此,将Integer.parseInt(args[j]);替换为Integer.parseInt(1000);添加到图灵所说的内容中,解决方案应该遵循以下伪代码:
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发布于 2018-12-03 23:34:28
使用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);
}
}https://stackoverflow.com/questions/31172993
复制相似问题