3 或 5 的倍数(Java)

package edu.wust;
//1000一下3或5的倍数之和

public class work001 {

/**
 * 解法1 (常规办法)
 * 思路:遍历一遍1到1000 是3,5倍数则加
 * 时间复杂度:O( n )
 * 空间复杂度:O( 1 )
 */

    public static void fun1(){
        int sum=0;
        for(var i=1;i<1000;i++){
            if(i%3==0||i%5==0){
                sum+=i;
            }
        }
        System.out.println(sum);
    }

/**
 * 解法2 (数学公式思想)
 * 思路:3的倍数+5的倍数和-它们的最小公倍数的和(15)
 * 【2 4 的倍数和为 2的倍数+4的倍数和-它们的最小公倍数的和(4)】
 *时间复杂度:O( 1 )
 *空间复杂度:O( 1 )
 */
public static void main(String[] args) {
    int a=999/3,b=999/5,c=999/15;//1000内 3 5 15 倍数的个数
    int sum=a*(a+1)/2*3+b*(b+1)/2*5-c*(c+1)/2*15;
    System.out.println(sum);
}



}

注:本题以求1000以下的3和5的倍数为例

两种思路求解:

1.常规法 把1000内数字都遍历一遍

2.根据数学公式法求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值