鱼C论坛

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

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

  [复制链接]
发表于 2017-3-14 10:21:13 | 显示全部楼层

太麻烦了,i%3==0 or i%5==0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-15 16:10:04 | 显示全部楼层
sum = 0
for a in range(1,1000):
    if a%3 == 0 or a%5 == 0:
        sum += a
print(sum)
结果:233168
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-19 23:43:50 | 显示全部楼层
#include<stdio.h>
int main(){
        int a;
        int b;
        int c;
        int d;
        for( a=1;a<=1000;a++){
        b=a*3;
        c=a*5;
        d=b+c+d;
}
        printf("%d",d);
        getchar();
}
~                       
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-3 00:04:56 | 显示全部楼层
sum([x for x in range(1000) if x%3==0 and x%5==0])
结果:233168。
思路:通过for循环遍历0-999,对3和5的倍数取出存入一个列表中,再通过sum函数将生成的列表元素(也就是3和5的倍数)进行相加,算出结果。
疑问:在判断3和5倍数的地方有没有更好的写法?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-30 19:19:14 | 显示全部楼层
#include<stdio.h>

int main()
{
        const int x = 1000;
        int sum = 0;
        for (int i = 3; i < x; i++)
        {
                if (i % 3 == 0 || i % 5 == 0)
                {
                        sum += i;
                }
        }
        printf("%d\n", sum);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-4 12:46:19 | 显示全部楼层
答案正解233168
这里用数学方法来缩短程序运行时间,计算3的求和+5的求和-多余的15的求和即可。
#include<stdio.h> 
#include<stdlib.h> 
//为简化代码,只支持30以上的运算 
int main(void)
{
        int lim,Sn=0;
        printf("enter the limit:\t");
        scanf("%d",&lim);
        if(lim<31)        exit(1);
        
        lim--;
        Sn=(3+lim/3*3)*(lim/3)/2+(5+lim/5*5)*(lim/5)/2-(15+lim/15*15)*(lim/15)/2;

        printf("sum = %d",Sn);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-14 20:11:23 | 显示全部楼层
mul3 = 3
mul5 = 5
mul15 = 15
lim = 1000
if mul3 <= lim:
    mul3 += 3
if mul5 <= lim:
    mul5 += 5
if mul15 <= lim:
    mul15 += 15
sum = mul3 + mul5 - mul15


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

使用道具 举报

发表于 2017-5-14 20:28:45 | 显示全部楼层
mul3 = 3
mul5 = 5
mul15 = 15
lim = 1000
sum3 = 3
sum5 = 5
sum15 = 15
while mul3 < lim:
    mul3 += 3
    sum3 +=mul3
while mul5 < lim:
    mul5 += 5
    sum5 += mul5
while mul15 < lim:
    mul15 += 15
    sum15 += mul15
sum = sum3 + sum5 - sum15
print(sum)


求大神给看下是哪里错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-14 20:35:21 | 显示全部楼层
gongxiaobo2006 发表于 2015-4-24 14:26
把代码贴一下,看看对不对,哪位大婶有牛鼻的,希望不吝赐教阿!
sum=0
for i in range(0,1000):

不用写i = i+1
sum = 0
for i in range(1000):
    if i%==0 or i%5==0:
        sum +=i
print(sum)

这样子就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-17 10:31:16 | 显示全部楼层
i = 1
m = 1
while i <= 1000:
    if i % 3 == 0 or i % 5 == 0:
        m = m + i
    i += 1
print(m)
我认为不用再去区分是不是同时是3和5的倍数,应为3和5的倍数也符合if条件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-18 19:35:17 | 显示全部楼层
sum = 0
i = 0
while i<1000:
    if i%3==0 or i%5==0:
        sum = sum + i
    i = i + 1
print(sum)
Python新手,结果是233168
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-31 07:51:54 | 显示全部楼层
用的是python,结果是233168
def natural(n):
    sum = 0
    for each in range(n):
        if each % 3 == 0 or each % 5 == 0:
            sum = sum + each
    return sum
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-4 20:35:00 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-7-2 18:29 编辑
count = 0
for i in range(1, 1000):
    if not i % 3 or not i % 5:
        count += i
print(count)
答案:233168
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-15 16:25:56 | 显示全部楼层
def sum(to):
    result = 0
    for i in range(1,to):
        if i%3 == 0 or i%5 == 0:
            result += i
    return result

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

使用道具 举报

发表于 2017-6-15 16:27:52 | 显示全部楼层
本帖最后由 悠然随心 于 2017-6-15 16:34 编辑
def sum(to):
    result = 0
    i = 3
    while i < to:
        result += i
        i += 3
            
    i = 5
    while i < to:
        result += i
        i += 5
            
    i = 15
    while i < to:
        result -= i
        i += 15
            
    return result

print(sum(1000))
这种写法代码长一些,但运行效率比上一楼要高
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-6-22 17:42:04 | 显示全部楼层
num_list = []
for i in range (1,1000):
    if i % 3 == 0 or i % 5 == 0:
        num_list.append(i)

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

使用道具 举报

发表于 2017-7-1 17:29:31 | 显示全部楼层
简单粗暴
#include <stdio.h>

int tot;

int main()
{
        for (int i = 3; i < 1000; i++)
                if (i % 3 == 0 || i % 5 == 0)
                        tot += i;
        printf("%d", tot);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-1 17:58:05 | 显示全部楼层
本帖最后由 fatsky 于 2017-7-1 18:04 编辑

仿筛法:
#include <cstdio>

int tot,num[1000];

int main()
{
        for (int i = 3; i < 1000; i += 3) num[i] == 1;
        for (int i = 5; i < 1000; i += 5) num[i] = 1;
        for (int i = 3; i < 1000; i++)
                if (num[i])tot += i;
        printf("%d", tot);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-3 17:21:56 | 显示全部楼层
本帖最后由 Plinskin 于 2017-7-3 17:27 编辑

print "To Find The Sum Of All The Multiples Of 3 Or 5 Below 1000"

counterNum=0
Sum = 0
i = 0

while  i <= 1000:
    if i % 3 == 0 or i % 5 == 0:
        counterNum = i
        Sum = Sum + counterNum
        i += 1
    else:
        i += 1

print "the Final Sum is:" + str(Sum)


===运行结果====
/usr/bin/python /Users/plinskin/PycharmProjects/untitled1/分数.py 1
To Find The Sum Of All The Multiples Of 3 Or 5 Below 1000
the Final Sum is:234168

Process finished with exit code 0

为啥我算出来是234168,我看了步进,在15这种即整除3又整除5的地方也只计算一次呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-3 17:33:56 | 显示全部楼层
悠然随心 发表于 2017-6-15 16:27
这种写法代码长一些,但运行效率比上一楼要高

确实是,参与计算的都是符合要求的数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 16:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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