鱼C论坛

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

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

  [复制链接]
发表于 2017-7-3 22:20:03 | 显示全部楼层
Plinskin 发表于 2017-7-3 17:21
print "To Find The Sum Of All The Multiples Of 3 Or 5 Below 1000"

counterNum=0

因为题目是1000以下,而你包含了1000,不知我说的对不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-7 16:55:25 | 显示全部楼层
  1. x=0
  2. y=0
  3. for i in range(0,1000):
  4.         if i%3 ==0:
  5.                 x = x+i
  6. for i in range(0,1000):
  7.         if i%5 ==0 and i%3!=0:
  8.                 y= y+i
  9. print(x+y)
复制代码


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

使用道具 举报

发表于 2017-7-24 21:32:57 | 显示全部楼层
本帖最后由 燃烧的发丝 于 2017-7-24 21:45 编辑

// 非枚举算法  
//循环333次  即可
// 计算时间 为枚举算法的 3分之1    计算结果为233168

#include <iostream>

int main()
{
        static int x3 = 3;
        static int x5 = 5;
        static int x15 = 15;
        static int x = 0;
        while (true)
        {       
                if (x3 < 1000)
                {
                        x += x3;
                        x3 += 3;                       
                        if (x5 < 1000)
                        {
                                x += x5;
                                x5 += 5;                               
                        }
                        if (x15 < 1000)
                        {
                                x -= x15;
                                x15 += 15;                               
                        }
                }
                else
                {
                        break;
                }
        }

        std:: cout<< "1000以下的自然数中,属于3或5的倍数的数字之和为:" <<
                x << std::endl;       
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-24 21:43:41 | 显示全部楼层
本帖最后由 燃烧的发丝 于 2017-7-24 21:46 编辑



学了小甲鱼的数据结构与算法     思维还真是不一样了;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-25 17:18:29 | 显示全部楼层
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         int sum = 0,i;

  5.         for(i = 1;i < 1000;i++)
  6.         {
  7.                 if((i % 3 == 0 ) || (i % 5 == 0))
  8.                 {       
  9.                         sum += i;
  10.                 }
  11.                 else
  12.                 {
  13.                         continue;
  14.                 }
  15.         printf("sum = %d\n",sum);

  16. }
复制代码


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

使用道具 举报

发表于 2017-7-28 16:07:42 | 显示全部楼层
1.桶排序 重复次数为1的数相加 缺点:占内存
2.for循环 执行时间长
  1. if(n%3==0)
  2. {
  3. if(n%5==0)
  4. {
  5. s+=n;
  6. break;
  7. }
  8. sum+=n;
  9. }

  10. if(n%5==0&&n%15!=0)
  11. sum+=n;

  12. sum+=s;
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-2 16:20:00 | 显示全部楼层
sum = 0
for i in range(0,1000):
    if  (i%3==0) or (i%5==0):
         sum += i
    else:
         sum += 0

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

使用道具 举报

发表于 2017-8-7 08:05:51 | 显示全部楼层
  1. sum = 0
  2. for i in range(1001):
  3.         if i%3==0 or i%5==0:
  4.             sum +=i

  5. print ("1000以内3或者5的倍数的和为:%d" % sum)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-7 08:07:34 | 显示全部楼层
  1. sum = 0
  2. for i in range(1000):
  3.         if i%3==0 or i%5==0:
  4.             sum +=i

  5. print ("1000以内3或者5的倍数的和为:%d" % sum)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-18 18:12:22 | 显示全部楼层
一行搞定:
  1. sum([i for i in range(1000)if i%3==0 or i%5==0])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-9 07:42:40 | 显示全部楼层
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         int i;
  5.         int sum = 0;
  6.        
  7.         for (i=1;i<1000;i++)
  8.         {
  9.                 if (i%3 == 0 || i%5 == 0)
  10.                 {
  11.                         sum += i;
  12.                 }
  13.         }
  14.        
  15.         printf("1000以下的自然数中,属于3和5的倍数的数字之和:%d", sum);
  16.        
  17.         return 0;
  18. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-24 22:11:42 | 显示全部楼层
gongxiaobo2006 发表于 2015-4-24 14:25
我的结果是233168!哈哈哈哈哈

s=3*sum(1:333)+5*sum(1:200);
s=267333
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-29 15:38:28 | 显示全部楼层
AArdio编译
  1. import console;
  2. import time.timer

  3. console.setTitle("test");

  4. time.timer.start();
  5. sum = 0;
  6. for(i=3;999;3){
  7.         sum += i

  8. }
  9. for(i=5;999;5){
  10.         sum += i

  11. }
  12. for(i=15;999;15){
  13.         sum -= i

  14. }

  15. console.print(sum);

  16. console.print(time.timer.endTick())

  17. console.pause();
复制代码

233168
0.45397067070007
请按任意键继续 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2017-11-1 20:04:47 | 显示全部楼层
本帖最后由 编程新血 于 2017-11-1 20:18 编辑

python3:

l3=list(range(3,1000,3))
l5=list(range(5,1000,5))
listz=list(set(l3+l5))
print(sum(listz))

取3的倍数列表,与5的倍数列表组合一起,去掉重复选项,

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

使用道具 举报

发表于 2018-1-4 10:30:56 | 显示全部楼层
#include <stdio.h>

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

使用道具 举报

发表于 2018-1-31 00:11:28 | 显示全部楼层
  1. 1 #include <stdio.h>
  2.   2
  3.   3 int multiSum(int, int);
  4.   4
  5.   5 int multiSum(int max, int n)
  6.   6 {
  7.   7     int total, maxMulti;
  8.   8
  9.   9     maxMulti = max / n;
  10. 10     return  (maxMulti * (maxMulti + 1)) / 2 * n;
  11. 11 }
  12. 12
  13. 13 int main(void)
  14. 14 {
  15. 15     int total;
  16. 16     total = multiSum(1000, 3) + multiSum(1000, 5) - multiSum(1000, 3 * 5);
  17. 17     printf("%d\n", total); //234168
  18. 18     return 0;
  19. 19 }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-4 15:08:52 | 显示全部楼层
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i,sum=0;
  5.         for(i=0;i<1000;i++)
  6.         {
  7.                 if(i%3==0||i%5==0)
  8.                 {
  9.                         sum=sum+i;
  10.                 }
  11.         }
  12.         printf("%d\n",sum);
  13.         return 0;
  14. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-4 20:23:05 | 显示全部楼层
  1. sum1 = sum([i for i in range(1000) if not i%3 or not i%5])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-14 13:16:49 | 显示全部楼层
  1. def f(n):
  2.     s = 0
  3.     for i in range(n):
  4.         if i % 3 == 0 or i % 5 == 0:
  5.             s += i
  6.     return s
  7. num = 1000
  8. result = f(1000)
  9. print('1000以内,3或5的倍数的数字之和为:%d' % result)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 18:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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