首页 > 解决方案 > 将 3 和 5 的倍数相加直到 n

问题描述

这是我的第一个问题,希望我得到适当的回答。这是来自hackerrank网站的一个问题。

问题:将 3 和 5 的倍数相加直到“N”

样本输入 0

100

样本输出 0

2318

我的代码:

import java.io.*;
import java.util.*;


public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        int sum=0,j=3,k=5;
        for(int a0 = 0; a0 < t; a0++)
        {
            int n = in.nextInt();
            
            while(j<n)
            {
                sum=sum+j;
                
                j+=3;
            

            }
            while(k<n)
            {
                sum=sum+k;
                k+=5;
            }
            System.out.println(sum);
            sum=0;
        }
    }
}

这段代码给了我一个错误的输出。请注意这个问题。

标签: javaalgorithm

解决方案


要知道一个数是否是另一个数的倍数,最简单的方法是将一个数除以另一个数并检查模数。你永远不会那样做。

我会建议这样的事情:

import java.util.Scanner;

public class Main {

    private static final int THREE = 3;
    private static final int FIVE = 5;

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        int sum=0;

        for(int a0 = 0; a0 <= t; a0++)
        {

            if (a0 % THREE == 0 || a0 % FIVE == 0) {
                sum += a0;
            }

        }
        System.out.println(sum);

    }

}

推荐阅读