鱼C论坛

 找回密码
 立即注册
查看: 4121|回复: 10

[已解决]计算3 5的倍数之和

[复制链接]
发表于 2020-3-10 22:22:40 | 显示全部楼层 |阅读模式
2鱼币
计算出 1000 以内(不包含 1000)的自然数中,属于 3 或 5 的倍数的数字之和

请问  问题出在哪里啊

  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int a , i=1,c = 1, b;
  5.         long long int g,m = 0,n = 0;

  6.                         while(a < 1000)
  7.                 {    a = 5*i;
  8.                      i = i + 1;
  9.                          if(a<1000)
  10.                         {
  11.                          m=a + m;
  12.                          }
  13.           }
  14.                  while(b< 1000)
  15.                 {    b = 3*c;
  16.                      c = c + 1;
  17.                          if(b<1000)
  18.                         {
  19.                           
  20.                          n=b + n;
  21.                          }
  22.                  }
  23.                  
  24.                 g = m +n;
  25.             printf("%lld",g);
  26.         return 0;
  27. }
复制代码


最佳答案
2020-3-10 22:22:41
一个循环就足够了

最佳答案

查看完整内容

一个循环就足够了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-10 22:22:41 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
一个循环就足够了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 01:20:52 | 显示全部楼层
重复计算了15的倍数。比如15,算5的倍数的时候加了一次,算3的倍数的时候又加了一次
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 10:18:29 | 显示全部楼层
应该是多少,我算的不对嘛?难道不是266333?我现在都还记得这个答案,我服了,输了也进不去。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 12:39:20 | 显示全部楼层
本帖最后由 jackz007 于 2020-3-11 14:18 编辑

        楼主肯定是重复统计了,答案应该是 233168
        要想不重复,最好在一次循环中搞定
  1. #include <stdio.h>

  2. main(void)
  3. {
  4.         int i , s                                                              ;
  5.         for(s = 0 , i = 0 ; i < 1000 ; i ++) if(! (i % 3) || ! (i % 5)) s += i ;
  6.         printf("%d\n" , s)                                                     ;
  7. }
复制代码

        编译、运行实况:
  1. C:\Bin>g++ -o x x.c

  2. C:\Bin>x
  3. 233168

  4. C:\Bin>
复制代码

        当然,也不是说不可以分两次搞定:
  1. #include <stdio.h>

  2. main(void)
  3. {
  4.         int i , s                                       ;
  5.         for(s = 0 , i = 3 ; i < 1000 ; i += 3) s += i   ;
  6.         for(i = 5 ; i < 1000 ; i += 5) if(i % 3) s += i ;
  7.         printf("%d\n" , s)                              ;
  8. }
复制代码

        编译、运行情况与上面完全相同
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 15:51:14 | 显示全部楼层
#include <stdio.h>
int main()
{
    int i,  sum = 0;
    for (i = 0;i < 1000;i++)
    {
        if ((i % 3 == 0) || (i % 5 == 0))
        {
           
            sum += i;
        }

    }
    printf("%d",sum );
    return 0;
}

提供参考,个人建议
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 19:40:12 | 显示全部楼层
重复了吧,3和5的公倍数,在最后多加了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 21:43:19 | 显示全部楼层
本帖最后由 zm_selina 于 2020-3-11 21:46 编辑

  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int sum = 0, i;
  5.        
  6.         for(i=1; i<1000; i++)
  7.         {
  8.                 if((i%3==0) || (i%5==0))
  9.                 {
  10.                         sum += i;
  11.                 }
  12.         }
  13.        
  14.         printf("%d", sum);
  15.        
  16.         return 0;
  17. }
复制代码

3和5的公倍数算重复了,一个循环就行了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-11 22:37:13 | 显示全部楼层
Loser_YiMo 发表于 2020-3-11 10:18
应该是多少,我算的不对嘛?难道不是266333?我现在都还记得这个答案,我服了,输了也进不去。

多了15
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 08:24:57 | 显示全部楼层
Loser_YiMo 发表于 2020-3-11 10:18
应该是多少,我算的不对嘛?难道不是266333?我现在都还记得这个答案,我服了,输了也进不去。

来自PROJECT EULER
  1. Answer:
  2. 233168
复制代码

你绝对把3和5 的倍数重复算了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 09:46:27 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-3-12 08:24
来自PROJECT EULER
你绝对把3和5 的倍数重复算了

感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-27 16:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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