我需要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)
答案 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++).