鱼C论坛

 找回密码
 立即注册
楼主: 欧拉计划

题目1:找出1000以下自然数中3和5的倍数之和

  [复制链接]
发表于 2022-11-8 18:49:21 | 显示全部楼层
  1. int find3or5(int n){//找出1000以下自然数中3和5的倍数之和
  2.         int three = (n-1) / 3;
  3.         int five = (n-1) / 5;
  4.         int fifteen = (n-1) / 15;
  5.         return 3* (1 + three)* three / 2 + 5 * (1 + five) * five / 2 - 15 * (1 + fifteen) * fifteen / 2;
  6. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-27 07:46:29 | 显示全部楼层
python一行:
  1. print(sum([i for i in range(1, 1000) if i % 3 == 0 or i % 5 == 0]))
复制代码

C++:
  1. #include <iostream>
  2. using namespace std;

  3. int main(){
  4.         int num = 0;
  5.         for (int i = 0; i < 1000; i++){
  6.                 if (i % 3 == 0 || i % 5 == 0){
  7.                         num += i;
  8.                 }
  9.         }
  10.         cout << num << endl;

  11.         return 0;
  12. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-27 22:34:13 | 显示全部楼层
sum([i for i in range(1,1001) if i%3==0 or i%5==0])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-28 09:52:43 | 显示全部楼层
b = []
sum = 0
for i in range(1001):
    a = len(str(i))
    for k in range(a):
        sum += int(str(i)[k])
    if sum % 3 == 0:
        b.append(i)
    sum = 0
    if str(i)[a-1] == '0' or str(i)[a-1] == '5' :
        b.append(i)
for i in range(len(b)-1):
    if b.count(b[i]) != 1:
        b[i]=0
sum = 0
for i in b:
    sum += i
    if i == 1000:
        print(sum)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-13 14:04:12 | 显示全部楼层
267,333
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-6 10:27:19 | 显示全部楼层
  1. add=0
  2. for each in range(1000//3+1):
  3.     add+=3*each
  4.     if 5*each<1000 and each%3!=0:
  5.         add+=5*each
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-9 13:14:15 | 显示全部楼层
int main(void)
{
        int i,j,l;
        int s=0;
       
        for(i=3;i<=1000;i=i+3)
        {
                s=s+i;
        }
        for(j=5;j<=1000;j=j+5)
        {
                s=s+j;
        }
        for(l=15;l<=1000;l=l+15)
        {
                s=s-l;
        }
       
        printf("1000 以下的自然数中,属于 3 或 5 的倍数的数字之和为%d",s);
       
        return 0;
}
//满足x+y+1<=xy即可,就可以减少次数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 16:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表