鱼C论坛

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

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

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

请问  问题出在哪里啊
#include <stdio.h>
int main()
{
        int a , i=1,c = 1, b;
        long long int g,m = 0,n = 0;

                        while(a < 1000)
                {    a = 5*i;
                     i = i + 1;
                         if(a<1000)
                        {
                         m=a + m;
                         } 
          }
                 while(b< 1000)
                {    b = 3*c;
                     c = c + 1;
                         if(b<1000)
                        {
                          
                         n=b + n;
                         } 
                 }
                 
                g = m +n;
            printf("%lld",g);
        return 0;
}

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

最佳答案

查看完整内容

一个循环就足够了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-10 22:22:41 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
一个循环就足够了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 01:20:52 | 显示全部楼层
重复计算了15的倍数。比如15,算5的倍数的时候加了一次,算3的倍数的时候又加了一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

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

main(void)
{
        int i , s                                                              ;
        for(s = 0 , i = 0 ; i < 1000 ; i ++) if(! (i % 3) || ! (i % 5)) s += i ;
        printf("%d\n" , s)                                                     ;
}
        编译、运行实况:
C:\Bin>g++ -o x x.c

C:\Bin>x
233168

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

main(void)
{
        int i , s                                       ;
        for(s = 0 , i = 3 ; i < 1000 ; i += 3) s += i   ;
        for(i = 5 ; i < 1000 ; i += 5) if(i % 3) s += i ;
        printf("%d\n" , s)                              ;
}
        编译、运行情况与上面完全相同
想知道小甲鱼最近在做啥?请访问 -> 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;
}

提供参考,个人建议
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 19:40:12 | 显示全部楼层
重复了吧,3和5的公倍数,在最后多加了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 21:43:19 | 显示全部楼层
本帖最后由 zm_selina 于 2020-3-11 21:46 编辑
#include <stdio.h>

int main()
{
        int sum = 0, i;
        
        for(i=1; i<1000; i++)
        {
                if((i%3==0) || (i%5==0))
                {
                        sum += i;
                }
        }
        
        printf("%d", sum);
        
        return 0;
 } 
3和5的公倍数算重复了,一个循环就行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

多了15
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

来自PROJECT EULER
Answer:
233168
你绝对把3和5 的倍数重复算了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-27 08:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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