欧拉计划 发表于 2015-4-20 23:11:11

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

本帖最后由 不二如是 于 2017-6-17 22:13 编辑

Multiples of 3 and 5

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.

题目:

10 以下的自然数中,属于 3 或 5 的倍数的有 3, 5, 6 和 9,它们之和是 23。

找出 1000 以下的自然数中,属于 3 或 5 的倍数的数字之和。

gongxiaobo2006 发表于 2015-4-24 14:25:40

我的结果是233168!哈哈哈哈哈

gongxiaobo2006 发表于 2015-4-24 14:26:58

本帖最后由 永恒的蓝色梦想 于 2020-9-15 18:51 编辑

把代码贴一下,看看对不对,哪位大婶有牛鼻的,希望不吝赐教阿!sum=0
for i in range(0,1000):
    if i%3==0 or i%5==0:
      sum=sum+i
      i=i+1
    else:
      i=i+1
print(sum)

瞬秒爆加速 发表于 2015-4-26 11:16:20

本帖最后由 瞬秒爆加速 于 2015-4-26 11:19 编辑

def pl(x):
      s=[]
      for i in range(x):
                if i % 3 ==0 or i % 5 ==0:
                        s.append(i)
      else:
                return sum(s)

def pl(x):
      return sum()

Mikel 发表于 2015-5-17 18:09:16

>>> s3 =
>>> s5 =
>>> sum(s3)+sum(s5)

Mikel 发表于 2015-5-17 18:11:05

本帖最后由 永恒的蓝色梦想 于 2020-9-15 18:51 编辑

s5 =

神人 发表于 2015-5-18 17:57:55

long theSum(int maxNum)
{
        int i;
        long sum = 0;

        for (i = 3; i < maxNum; i += 3)
        {
                sum += i;
        }
        for (i = 5; i < maxNum; i += 5)
        {
                sum += i;
        }
        for (i = 15; i < maxNum; i += 15)
        {
                sum -= i;
        }

        return sum;
}
直接把数字拿出来算
这题传参为1000

HALLDY 发表于 2015-6-26 00:20:18

那答案是多少啊,算出来是4432504

HALLDY 发表于 2015-6-26 00:28:18

# include<stdio.h>

int main()
{
      int i=0,total;
      while (i<1000)
      {
                if(i%5==0)
                {
                        total+=i;
                }
                else if(i%3==0)
                {
                  total+=i;      
                }
                i++;
      }
      printf("%d\n",total);
      return 0;
}

翅膀团 发表于 2015-6-29 15:19:19

本帖最后由 永恒的蓝色梦想 于 2020-9-15 18:53 编辑

我的答案是233168。
C语言:#include <stdio.h>

int main(void)
{
    int i,result = 0;
    for(i=0;i<1000;i++)
    {
    if(i % 3 == 0 || i % 5 == 0)
    {
    result += i;
    }
    }
    printf("%d\n",result);
}如果有错误希望指出

翅膀团 发表于 2015-6-29 15:20:38

HALLDY 发表于 2015-6-26 00:28


total 没有清零

无名侠 发表于 2015-7-8 17:53:00

本帖最后由 永恒的蓝色梦想 于 2020-9-15 18:53 编辑

sum()

无名侠 发表于 2015-7-8 17:54:55

HALLDY 发表于 2015-6-26 00:28


错了,有的数同时是3和5的倍数。
比如 15

牡丹花下死做鬼 发表于 2015-7-19 22:03:06

#include<stdio.h>
void main()
{
        int i, j;
        i = 3;
        j = 0;
        while(i <1000)/*算出所有3的倍数的和*/
        {
                j += i;
                i += 3;
        }
        i = 5;
        while(i < 1000) /*算出所有5的倍数的和*/
        {
                j += i;
                i += 5;
        }
        i = 15;
        while(i<1000)/*减掉3的倍数5的倍数重复的也就是15的倍数的和*/
        {
                j -= i;
                i += 15;
        }
        printf("sum = %d",j);
       
}

damingdingdin 发表于 2015-8-20 17:42:21

def sum(frm,to):
    result=0
    for i in range(frm,to):
      if i%3==0 or i%5==0:
            result+=i
    return result
print(sum(0,1000))

wyc1gg 发表于 2015-10-8 08:28:40

本帖最后由 永恒的蓝色梦想 于 2020-9-15 18:53 编辑

Number_list = range(0,1000)

sum1 = 0
for number in Number_list:
        if (number % 3 == 0 ) or (number % 5 ==0):
                sum1 += number


print('1000以下的3或5的倍数的自然数之和是:<%d>'%sum1)

===========================================
结果:
1000以下的3或5的倍数的自然数之和是:<233168>
===========================================
感觉想得比较简单,代码有点多!

WilliamYu 发表于 2015-10-19 18:46:01

int sum, sum1, sum2, sum3, a, b, c;
a = 999 / 3;
b = 999 / 5;
c = 999 / 15;
sum1 = (3 + 3 * a ) * a / 2;//1000以下自然数中3的倍数之和
sum2 = (5 + 5 * b ) * b / 2;//1000以下自然数中5的倍数之和
sum3 = (15 + 15 * c) * c / 2;   //1000以下自然数中3和5最小公倍数的倍数之和
sum = sum1 + sum2 - sum3;

maoguy 发表于 2015-10-29 02:06:34

#include <stdio.h>

int main()
{
    int i,sum=0;//i为1-1000的数字 sum为所求和

        for(i = 1;i < 1000;i ++)
        {
                if(i % 15 == 0) //先找出同时被3和5整除的数
                {
                                sum += i;//把次数加入和中
                                continue;
                }

                else if(i % 3 == 0)//把3的倍数找出
                {
                        sum += i;
                        continue;
                }

                else if(i % 5 == 0)//把5的倍数找出
                {
                        sum += i;
                        continue;
                }

        }

        printf("所求之和为%d\n",sum);

        return 0;

}


答案233168

鸡汤不加盐 发表于 2015-12-22 00:05:36

本帖最后由 鸡汤不加盐 于 2015-12-22 00:29 编辑

def getSum():
    sum = 0
    for x in range (1,1000):
      if x % 3 == 0 or x % 5 == 0:
            sum += x
            return sum


新手 ,连门都没入,到quora 上抄了一个,结果人家说出来233168,为什么我出来SHELL 里出来的是 空白? 谁能告诉我吗? 谢谢

我的思路是
   首先定义范围1-1000
   其次定义 数据类型 整数
   再次 能被3,,5相除的整数
再次求和
中间确实可能出现像别的朋友说的那样同时被3 和5 相除的数字,那就要强制每个数字只执行一次?
不过目前我还不会写,抄别人的到是看的懂。{:5_97:}

mysteri0n 发表于 2016-1-24 13:16:49

#python 2.7.11

sum(num for num in range(1,1000) if num%3 == 0 or num%5 ==0)
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 题目1:找出1000以下自然数中3和5的倍数之和