时间回不来 发表于 2021-4-4 22:12:41

aalittlefish 发表于 2021-3-14 14:57
// 解题思路: 假设找20以内3和5的倍数之和 --- 3,6,9,12,15,18 + 5,10,15 - 15
// 就是将3的倍数相加,将 ...

想法不错,可以看一下楼下。简单计算时间复杂度可为1,空间复杂度也可以换为常数(即内存可以极大节省)

手残待拯救 发表于 2021-4-20 04:34:12

本帖最后由 手残待拯救 于 2021-4-20 05:32 编辑

这里可能出现的问题:
1.重复计算3和5的公共倍数
2.代码与思维不符合
解决方案:
写下你的需求。
无法一步完成需求时,拆解你的需求,直到他的每一块构造都能被一步完成。(有时只是经验不够,或者方法不够多)
检查你的拆解
用代码分步完成你你的需求
优化代码
1.需求:求出1000以内,3和5的倍数的和
2.拆解:1.数列1000,2。满足3的倍数或者5的倍数。
3.检查:求和
4.代码:
a = sum(x for x in range(1000) if not x % 3 or not x % 5)
print(a)
当然这里直接给出的是优化后的代码
最后a = 233168

酷爱语言的小白 发表于 2021-4-22 17:08:46

#题目1:找出1000以下自然数中3和5的倍数之和
sum1 = 0
for i in range(1000):
    if i/3 - i//3 == 0 or i/5 - i//5 ==0:
      sum1 += i
print(sum1)

Kuri5u 发表于 2021-5-2 19:58:11

sum =0
for dev in range(1,1000):
    if( dev % 3 == 0) or (dev % 5 == 0):
      sum += i
    dev += 1
print(sum)

梦里一打五 发表于 2021-5-20 15:43:48

sum = 0
for i in range(1,1000):
    if i / 3 == i // 3:
      sum += i
    elif i / 5 == i // 5:
      sum += i
print(sum)

wcq15759797758 发表于 2021-7-9 14:43:25

a = 0
for i in range(1,1000):
    if i % 3 == 0 or i % 5 == 0:
      a = a + i
print(a)

答案是233168

帅周 发表于 2021-7-23 20:40:23

gongxiaobo2006 发表于 2015-4-24 14:25
我的结果是233168!哈哈哈哈哈

        long sum = 0;
        int swp;

        swp = 3;
        while (1)
        {
                if (swp < 1000)
                {
                        sum += swp;
                        swp += 3;
                }
                else
                {
                        break;
                }
        }

        swp = 5;
        while (1)
        {
                if (swp < 1000)
                {
                        sum += swp;
                        swp += 5;
                }
                else
                {
                        break;
                }
        }
我是266333

法海在线灭缘 发表于 2021-8-10 03:57:49

#include <stdio.h>
#define N 1000
void main()
{
        int i,sum=0;
        for(i=3;i<N;i+=3){
                sum+=i;
        }
        for(i=5;i<N;i+=5)
                if((i%3)!=0){
                sum+=i;
        }
        printf("%d",sum);
}
运行结果233168

我叫武炜昊 发表于 2021-8-19 13:33:49

本帖最后由 我叫武炜昊 于 2021-8-19 13:35 编辑

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


不至于吧,6行不就行行了

星动Hyphen 发表于 2021-9-29 14:14:45

sum = 0

for i in range(0,1000):
    if i % 3 == 0 or i % 5 == 0:
      sum += i
print(sum)

鱼塘里的鱼儿 发表于 2021-10-1 12:49:02

#include <iostream>
using namespace std;
int main()
{
        float sum=0;
        for(int a=1,b,c;a<1000;a++)
        {
                if(a%3==0||a%5==0)
                sum=sum+a;
        }
        cout<<sum;
      return 0;
}

ft215378 发表于 2021-10-7 19:11:00

# Multiples of 3 and 5
sum = 0
for i in range(1000):
    if (i % 3 == 0) or (i % 5 == 0):
      sum += i   
print(sum)

番杰 发表于 2021-10-25 16:14:26

#include<stdio.h>

int main(void)
{
unsigned int sum = 3;
for(int i = 5;i<1000;i++)
{
   if((i%3 ==0) || (i % 5 ==0))
   {
      sum += i;
      }
}
printf("%d",sum);

return 0;
}

梦雨 发表于 2021-12-7 17:00:52

#include<stdio.h>
int main()
{
int sum;
int y,t,x;
scanf("%d %d",&y,&t);
for(int i=0;i<1000;i++)
{
sum=i%y==0?i:i%t==0?i:0;
x+=sum;
}
printf("%d",x);
}{:10_298:}

Kazimierz 发表于 2022-2-22 11:34:33

#include <stdio.h>
int num(int number);

int num(int number)
{
        if(number%5==0||number%3==0)
        {
                return number;
        }else{
                return 0;
        }
}

int main()
{
        int i,result=0;
        for(i=0;i<1000;i++)
        {
                result+=num(i);
        }
       
        printf("%d",result);
        return 0;
}

水一波

鱼塘里的鱼儿 发表于 2022-4-16 19:51:07

以下是我用Java写的 运行出来是:234168
int sum=0;
      for(int i=1;i<=1000;i++){
            if(i%3==0||i%5==0){
                sum+=i;
            }
      }
      System.out.print(sum);

鱼塘里的鱼儿 发表于 2022-4-17 09:34:41

这是我用java for循环、while循环分别做的
for循环:
public static void main(String[] args) {
      int sum=0;
      for(int i=1;i<=1000;i++){
            if(i%3==0||i%5==0){
                sum+=i;
            }
      }
      System.out.print(sum);
    }

while循环:
public static void main(String[] args) {
      int sum=0;
      int i=0;
      while(i<1001){
            if(i%3==0||i%5==0){
                sum+=i;
            }
            i++;
      }
      System.out.print(sum);
    }

麒麟白泽 发表于 2022-8-6 10:32:26

一行流:
sum()

Asss-whom 发表于 2022-8-8 10:59:48

use rayon::prelude::*;
use std::time::Instant;


fn main() {
    let now = Instant::now();
    let num: i32 = (1..1000)
    .into_par_iter()
    .filter(|x| x % 5 == 0 || x % 3 == 0)
    .sum();
    println!("{num}");
    println!("耗时{}秒。", now.elapsed().as_secs_f32())
}
---
233168
耗时0.0004362秒。

搞事专家 发表于 2022-8-22 12:15:02

鸡汤不加盐 发表于 2015-12-22 00:05
def getSum():
    sum = 0
    for x in range (1,1000):


不知道你是不是用Python,如果是的话那就
      其实不用定义函数类型,直接输出就可以了
      你用了or就不用管重复了,他只会判断一次的,所以不用去刻意强调
页: 3 4 5 6 7 8 9 10 11 12 [13] 14
查看完整版本: 题目1:找出1000以下自然数中3和5的倍数之和