583164028 发表于 2020-8-7 20:33:35

等差数列求和公式直接的结果3*5=15   15的倍数的数列

583164028 发表于 2020-8-10 09:23:51

583164028 发表于 2020-8-7 20:33
等差数列求和公式直接的结果3*5=15   15的倍数的数列

你是对的

yhhpf 发表于 2020-8-21 14:46:11

a = int(999 / 3)
b = int(999 / 5)
c = int(999 / 15)
sum = (a*3 + a*(a-1)/2*3) + (b*5 + b*(b-1)/2*5) - (c*15 + c*(c-1)/2*15)
print(sum)

等差数列求和{:10_266:}

huanghuiyv 发表于 2020-9-11 21:15:31

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)

LuLD 发表于 2020-9-14 13:45:14

//1000以下自然数中3和5的倍数之和

#include <stdio.h>

int main1()
{
        int count = 0;
        for (int i = 1; i < 1000; i++)
        {
                if (i % 5 == 0 || i % 3 == 0)
                {
                        count += i;
                }
        }
        printf("1000以下自然数中3和5的倍数之和%d", count);
}

结果为233168

hante 发表于 2020-10-11 11:59:43

def main():
    total = 0
    for i in range(1000):
      if (i%3 == 0) or (i%5 == 0):
            total = i + total
            print("i->",i)

    print("sum->:",total)


if __name__ =="__main__":
    main()

丨游戏灬需要 发表于 2020-10-21 15:36:49

def func(maxNum):
    multiple3_list =
    multiple5_list =
    result =sum(multiple3_list) +sum(multiple5_list)
    return result

print(func(1000))

丨游戏灬需要 发表于 2020-10-21 18:23:57

def func(maxNum =1000):
    multiple3_list =
    multiple5_list =
    result =sum(multiple3_list) +sum(multiple5_list)
    return result

print(func())

落单riki君 发表于 2020-11-5 13:04:35

#include<stdio.h>
#define M 999
int main(){
        int sum;
        sum=3*((1+M/3)*(M/3))/2+5*((1+M/5)*(M/5))/2-15*((1+M/15)*(M/15))/2;
        printf("%d",sum);
        return 0;
}

秋风祭 发表于 2020-11-23 17:25:30

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

Dakyo 发表于 2020-11-26 10:21:28

每天进步一点点

xg-sco 发表于 2020-12-26 08:54:22

#include <stdio.h>

#define NUM 1000

int main ()
{
        int sum = 0;
        for (int i = 1; i < NUM; i++)
        {
                if (i % 3 == 0 || i % 5 == 0)
                {
                        sum += i;
                }
        }
        printf("%d", sum);
       
        return 0;
}

@0.0@sos 发表于 2021-1-6 14:00:29

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

人中仙 发表于 2021-2-1 22:25:36

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

#include <stdio.h>

#define UPPER_LIMIT 1000

int sum();

int main(){
printf("%d\n",sum());
}

#define F1_SUM_SWITCH
#ifdef F1_SUM_SWITCH
int sum(){
int sum = 0;
for(int i = 0;i<UPPER_LIMIT;i+=3) sum+=i;
for(int i = 0;i<UPPER_LIMIT;i+=5) (i%15) && (sum+=i);
return sum;
}
#endif


//#define F2_SUM_SWITCH
#ifdef F2_SUM_SWITCH
int sum(){
int sum = 0;
for(int i = 0;i<UPPER_LIMIT;i++){
    if(i%3 == 0 || i%5 == 0){
      sum += i;
    }
}
return sum;
}
#endif

Minecraft程序猿 发表于 2021-2-11 19:14:08

66(3和5的倍数),467(3或5的倍数)

Minecraft程序猿 发表于 2021-2-11 19:19:53

66(3和5的倍数),467(3或5的倍数)

15184683251 发表于 2021-2-11 22:33:24

gongxiaobo2006 发表于 2015-4-24 14:26
把代码贴一下,看看对不对,哪位大婶有牛鼻的,希望不吝赐教阿!

i=i+1是啥意义

李京 发表于 2021-2-17 18:16:08

本帖最后由 李京 于 2021-2-17 18:17 编辑

方法2比方法1少循环了将近400次而且不用判断
但是,加减上多了一百多次
我也不知道,那个效率高

还有其他方法请讲解思路

#include <stdio.h>

int f1(int n);//方法1
int f2(int n);//方法2

int f1(int n)
{
        int i, num = 0,cont1=0;//cont1统计num 加的次数

        for (i = 1; i < n; i++)//直接遍历所有
        {
                if (i % 3 == 0 || i % 5 == 0)
                {
                        cont1++;
                        num += i;
                }
        }
        printf("cont1 = %d\n", cont1);
        return num;
}

int f2(int n)//思路不是要判断3和5的倍数吗 直接+3和+5就行了,然后再把重复加的减掉
{
        int i=1, num = 0,cont=0;//cont统计加的次数

        for (i = 3; i < n; i+=3)//这里是加上所有3的倍数
        {
                num += i;
                cont++;
        }
        for (i = 5; i < n; i += 5)//这里是加上所有5的倍数
        {
                num += i;
                cont++;
        }

        for (i = 15; i < n; i += 15)//这里是减掉重复加的数
        {
                num -= i;
                cont++;
        }
        printf("cont = %d\n", cont);
        return num;
}

int main(void)
{
        int n;
        int num,num2;

        scanf("%d", &n);

        num = f2(n);
        num2 = f1(n);

        printf("%d%d",num,num2);

        return 0;
}

永恒的蓝色梦想 发表于 2021-2-17 22:28:16

李京 发表于 2021-2-17 18:16
方法2比方法1少循环了将近400次而且不用判断
但是,加减上多了一百多次
我也不知道,那个效率高


真正快的方法是使用等差数列求和公式

李京 发表于 2021-2-18 09:40:16

wo'ha

本帖最后由 李京 于 2021-2-18 10:21 编辑

永恒的蓝色梦想 发表于 2021-2-17 22:28
真正快的方法是使用等差数列求和公式

确实效率高,
#include <stdio.h>

int f(int n,int x);

int f(int n,int x)
{
        int i, j, an, num;

        j = (n - 1) / x;
        for (i = n - 1; i > 0; i--)
        {
                if (i % x == 0)
                {
                        an = i;
                        break;
                }
        }
        num = (j * (x + an) / 2);

        return num;
}

int main(void)
{
        int n, num=0;

        scanf("%d", &n);

        num = f(n, 3) + f(n, 5);
        num -= f(n, 3 * 5);

        printf("%d", num);

    return 0;
}
页: 2 3 4 5 6 7 8 9 10 11 [12] 13 14
查看完整版本: 题目1:找出1000以下自然数中3和5的倍数之和