计算3 5的倍数之和
计算出 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;
}
一个循环就足够了 重复计算了15的倍数。比如15,算5的倍数的时候加了一次,算3的倍数的时候又加了一次 应该是多少,我算的不对嘛?难道不是266333?我现在都还记得这个答案,我服了,输了也进不去。 本帖最后由 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) ;
}
编译、运行情况与上面完全相同 #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;
}
提供参考,个人建议 重复了吧,3和5的公倍数,在最后多加了 本帖最后由 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的公倍数算重复了,一个循环就行了。 Loser_YiMo 发表于 2020-3-11 10:18
应该是多少,我算的不对嘛?难道不是266333?我现在都还记得这个答案,我服了,输了也进不去。
多了15 Loser_YiMo 发表于 2020-3-11 10:18
应该是多少,我算的不对嘛?难道不是266333?我现在都还记得这个答案,我服了,输了也进不去。
来自PROJECT EULERAnswer:
233168
你绝对把3和5 的倍数重复算了 永恒的蓝色梦想 发表于 2020-3-12 08:24
来自PROJECT EULER
你绝对把3和5 的倍数重复算了
感谢!
页:
[1]