Project-Euler-001容斥原理

欧拉计划里面都是一些数学题,可以通过编程来解决它,只需要输入最后的结果即可。从简单到难,一点一点做,加油!

001题:

题意:

​ 如果我们列出10以内所有3或5的倍数,我们将得到3、5、6和9,这些数的和是23。

​ 求1000以内(不包括1000)所有3或5的倍数的和

思路:

​ 有两个:1.用暴力的方法遍历从1~999,只要是3或5的倍数就累加

​ 2.利用容斥原理,用3的倍数的和 + 5的倍数的和 - 15的倍数的和

代码:

#include <stdio.h>
int main () {
    int num3 = 999 / 3;	//求出1000以内3的倍数的个数
    int num5 = 999 / 5;	//求出1000以内5的倍数的个数
    int num15 = 999 / 15;	//求出1000以内15的倍数的个数
    //求出1000以内3的倍数的数的累加和
    int ans3 = (1 + num3) * num3 / 2 * 3;	
    //求出1000以内5的倍数的数的累加和
    int ans5 = (1 + num5) * num5 / 2 * 5;
    //求出1000以内15的倍数的数的累加和
    int ans15 = (1 + num15) * num15 / 2 * 15;
    //通过容斥原理求得结果为233168
    printf ("%d\n", ans3 + ans5 - ans15);
    return 0;
}

​ Over~

转载请注明出处!!!

如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值