JAVA程序可计算从0开始的前n个偶数之和(可被3整除)并打印该和

时间:2019-08-08 08:17:03

标签: java arrays

我需要Java代码来计算从0开始的前n个偶数之和,该数字可以被3整除并打印出总和。

import java.util.Scanner;
public class Exercise1_3 {
       public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       int n=sc.nextInt();
       int sum=0;
       for(int i=0;i<=n;i++)
       {
         if(i%2==0)
         {
           if(i%3==0)
           {
             sum=sum+i;
           }
         }
       }
       System.out.print(""+sum);
   }
 }

这段代码只给我答案,最多不超过10可以被3整除的数字(给出答案6),因为我需要被10除以3的前10个偶数的和,我需要答案36.(前10个偶数是2,4 ,6,8,10,12,14,16,18,20这样总和为6 + 12 + 18 = 36)

13 个答案:

答案 0 :(得分:1)

使用while循环,计算发现的匹配数量:

import java.util.Scanner;

public class Exercise1_3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int sum = 0;
        int i = 0;
        int matches = 0

        while(matches < n) {
            i++;
            if(i % 2 == 0 && i % 3 == 0) { 
            //or as mentioned in other answer use if(i % 6 == 0) {
                sum += i;
                matches++;
            }
        }
        System.out.println(String.format("%d", sum));
    }
}

答案 1 :(得分:1)

可被3整除的偶数是6的倍数。因此,您可以调整三角数(n*(n+1)/2)的公式以解决O(1)复杂度的问题并避免任何循环:

public int sumOfMultiplesOfSix(int num) {
  return 3 * num * (num + 1);
}

因此,要查看第一个 n 个偶数,您只需将输入除以3:

public int sumOfEvenCandidates(int numberOfCandidates) {
  return sumOfMultiplesOfSix(numberOfCandidates / 3);
}

答案 2 :(得分:1)

我认为您应该从控制台和计算中拆分输入限制。 在一个简单的情况下,您必须生成一个带有第2步和所需元素数的Arithmetic progression,然后将其除以3并对其求和。

public static int getSum(int max) {
    int sum = 0;

    for (int i = 0, val = 2; i <= max; i++, val += 2)
        if (val % 3 == 0)
            sum += val;

    return sum;
}

这是使用流的示例。

public static int getSum(int max) {
    return IntStream.iterate(2, val -> val + 2).limit(max)
                    .filter(val -> val % 3 == 0)
                    .sum();
}

答案 3 :(得分:0)

只需引入不同的for循环中断条件,即可对您的代码进行少量修改。

import java.util.Scanner;
public class Exercise1_3 {
   public static void main(String[] args) {
   Scanner sc = new Scanner(System.in);
   int n=sc.nextInt();
   int sum=0;
   int matches=0;
   for(int i=0;matches<=n;i++)
   {
     if(i%2==0 && i%3==0)
     {
         sum=sum+i;
         matches++;
     }
   }
   System.out.print(""+sum);
 }}

答案 4 :(得分:0)

我看不到您的代码有任何问题,只需输入20,就可以得到所需的答案。您一次从0迭代到n,每次递增1,因此如果输入为10,则输入只能从1变为10。如果您还想要其他东西,请相应地重新构建您的问题。

答案 5 :(得分:0)

import java.util.Scanner;
public class Exercise1_3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int sum=0;
        int even =0;
        for(int i=0;i<=n;i++) {
            if(even%3==0) {
                sum=sum+even;
            }
            even=even +2;
        }
        System.out.print(""+sum);
    }
}

我假设您想查看前10个偶数,并且仅求和除以3的数字。 这样就可以了。问题是您只检查到数字10。您应该有一个整数,该整数将增加+2,避免出现if条件。 希望我能帮上忙。

答案 6 :(得分:0)

非常简单。将for循环语句从 “对于(int i = 0; i <= n; i ++)” 至 “对于(int i = 0; i <=(2 * n); i ++)”

答案 7 :(得分:0)

尝试一下:

import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int sum=0;

        for(int i=0;i<=(2*n-2);i+=6){
            sum=sum+i;
        }
        System.out.print(sum);
    }
}

答案 8 :(得分:0)

import java.util.Scanner;
public class Exercise1_3 {
       public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       int n=sc.nextInt();
      int sum=0;
//Use for or while loop do the operation.
for(int i=0;i<=n*2;i+=2){
   if(i%3==0){
    sum+=i;
}
}
  
System.out.print(sum);
}
}

希望这会有所帮助,因为我们只需要偶数是最大数的两倍,所以当你计算 10 个偶数的总和时,它会计算出最多 20 的偶数总和。

答案 9 :(得分:0)

考虑从零(0)开始的前 n 个偶数。完成代码段计算从 0 到 n 可被 3 整除的所有数字的总和。打印总和。

public class Exercise1_3 {
 public static void main(String [] args)
 {
     Scanner sc=new Scanner(System.in);
     int n=sc.nextInt();
     int sum=0;

     for(int i=0;i<n*2;i+=2)
     {
         System.out.println(i);
        if(i%3==0)
        {
            sum+=i;
        }
     }
     System.out.println(sum); 
 }
    
}

答案 10 :(得分:0)

我在第 1 周第 3 次作业的 Nptel 课程中看到了这个问题,如果你问那门课程,我希望你能通过这个答案,

import java.util.Scanner;
public class Exercise1_3 {
       public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       int n=sc.nextInt();
      int sum=0;
      sum=-2;         //assign sum= -2 for start even values from 0
      int i=1;        //assign int i = 1 for using while
      int sumTemp=0;  //create sumTemp variable for store sum temporary value
           
           while(i<=n) {   
            sum=sum+2;   //sum will add +2 on it self for getting even numbers
             
             if(sum%3==0) {  
                 sumTemp=sum+sumTemp;  
             }i++;
        
           }
           sum=sumTemp;           // Store sum value from sumTemp

           System.out.print(sum); //finally print the sum
 }
}

答案 11 :(得分:-1)

我已经给出了他的主要想法,您可以自己使用扫描仪更改输入。

public class MyClass {
    public static void main(String args[]) {
       int i=0;
        int num=0;
        int sum = 0;
        System.out.println("Even numbers");
        while(i<=10)
        {
            if(num%3 == 0)
            {

               sum += num;
            }

            i+=1;
            num+=2;
        }
        System.out.println(sum); 
    }
}

答案 12 :(得分:-1)

您需要了解,如果您使用 for(int i=0;i<=n;i++) 那么您只检查前 5 个偶数,因此您需要将循环替换为 for(int i= 0;i<=(2*n);i++).