鱼C论坛

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

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

  [复制链接]
发表于 2018-9-13 16:36:02 | 显示全部楼层
i = 1
sum = 0
while i <= 1000:
    if i%3 == 0 or i%5 == 0:
        sum += i
    i+=1
print(sum)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-15 22:57:08 | 显示全部楼层
从没考虑过算法速度的我。
  1. ls = []
  2. for i in range(1,1001):
  3.         if i % 3 == 0 or i % 5 == 0:
  4.                 ls.append(i)
  5. print(sum(ls))
复制代码

>>>234168
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-15 22:59:41 | 显示全部楼层
StephenShi 发表于 2018-9-15 22:57
从没考虑过算法速度的我。

>>>234168

好像还做错了。1000以下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-17 15:20:32 | 显示全部楼层
print("找出 1000 以下的自然数中,属于 3 或 5 的倍数的数字之和")

def getsum(n):
    sum = 0
    for i in range(0,n):
        if i % 3 and i % 5:
            continue
        else:
            sum += i
    return sum

n = int(input('请输入一个自然数:'))

result = getsum(n)

print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-30 12:25:24 | 显示全部楼层
答案233168

mul = []
t = 0
for i in range(1000):
    if i % 5 == 0:
        mul.append(i)
for j in range(1000):
    if j % 3 == 0 and j not in mul:
        mul.append(j)
for k in range(0, len(mul)):
    t += mul[k]
print(t)   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-9 18:32:35 | 显示全部楼层
输出结果233168
int main(void)
{
        int sum=0;
        for (int i = 0; i <1000; i++)
        {
                if(i%3==0||i%5==0)
                {
                        sum+=i;
                }
        }
        printf("%d",sum);
        system("pause");
        return 0;


}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-1 00:45:34 | 显示全部楼层
#include <stdio.h>

int main()
{
        int i=3;
        int j=5;
        int temp1=0;
        int temp2=0;
        int temp3=0;
        float sum=0;
       
        temp1=1000/3;
        temp2=1000/5;
        temp3=1000/15;
       
        sum=(3+temp1)*(temp1/3)*0.5+(5+temp2)*(temp2/5)*0.5;
        temp3=(15+temp3)*(temp3/15)*0.5;
        sum-=temp3;
        printf("%f",sum);
       
        return 0;
       
}
算法复杂度 O(1)
运行结果为:22586
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-10 13:37:25 | 显示全部楼层
请问这个系列的题目会不会公布答案?还是要自己上其他地方查找资料?

因为看到下面的鱼油们答案各不相同,如果没有最后的比较值得参考的范本,个人感觉效果会打很大折扣呢。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-11 13:08:24 | 显示全部楼层
所以答案究竟是多少?我算的234168肯定是不对了,3和5 的公倍数我只加了一遍,题目是3倍数 + 5倍数,我少加了一个公倍数,果然不能看着字数少就少想些,不然肯定会丢数字,唉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-11 13:10:10 | 显示全部楼层
AndreaPWJ 发表于 2018-11-10 13:37
请问这个系列的题目会不会公布答案?还是要自己上其他地方查找资料?

因为看到下面的鱼油们答案各不相同 ...

主要审题没到位,看我答案就晓得了,自己可以再算遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-12 19:36:56 | 显示全部楼层
#include<stdio.h>
int main()
{
        int a,s=0;
        for(a=0;a<1000&&a>=0;a++)
        {
                if(a%3==0||a%5==0)
                s+=a;
        }
        printf("%d",s);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-24 14:36:10 | 显示全部楼层
sum([x for x in range(1000) if x % 3 == 0 or x % 5 == 0])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-24 14:39:17 | 显示全部楼层
#include<stdio.h>
int main(void)
{
        int i,s=0;
        for(i=1;i<=1000;i++)
        {
                if(i%3==0||i%5==0)
                {
                        s+=i;
                }
        }
        printf("%d",s);
       
}
233168
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-6 03:09:11 | 显示全部楼层
本帖最后由 Stubborn 于 2018-12-6 03:11 编辑
  1. list=[]
  2. for i in range(3,1000):
  3.     if i%3 == 0 or i%5 == 0:
  4.         list.append(i)
  5.     else:
  6.         continue
  7. print(sum(list))
复制代码
  1. sum(i for i in range(3,1000) if i%3 == 0 or i%5 == 0)
复制代码

233168
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-18 21:02:50 | 显示全部楼层
翅膀团 发表于 2015-6-29 15:19
我的答案是233168。
C语言:
#include

234168 因为还有一个1000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-19 18:08:52 | 显示全部楼层
sum = 0
for i in range(1000):
if i%3==0 and i%5==0
sum += i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-7 19:26:45 | 显示全部楼层
def sum_(num):
    ret = 0
    for i in range(num):
        if i % 5 == 0 or i % 3 == 0:
            ret += i
            # print(i)
    return ret


print(sum_(int(1001)))     # ret = 234168
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-8 16:04:55 | 显示全部楼层
def fun1(num):
    return (6+(num//3-1)*3)*(num//3)//2 + (10+(num//5-1)*5)*(num//5)//2 - (30+(num//15-1)*15)*(num//15)//2

print(fun1(1000))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-14 17:27:18 | 显示全部楼层
  1. num=[]
  2. for i in range(1000):
  3.     if i%3==0 or i%5==0:
  4.         num.append(i)
  5. print(sum(num))
复制代码

用for循环遍历,这样也不会重复计入15的倍数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-24 16:57:30 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 06:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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