Board logo

标题: [数值计算] 【已解决】用批处理找出1000以下的自然数中,属于 3 或 5 的倍数的数字之和 [打印本页]

作者: openye0521    时间: 2017-3-16 14:39     标题: 【已解决】用批处理找出1000以下的自然数中,属于 3 或 5 的倍数的数字之和

本帖最后由 openye0521 于 2017-3-16 16:17 编辑

#题目
#10 以下的自然数中,属于 3 或 5 的倍数的有 3, 5, 6 和 9,它们之和是 23
#找出 1000 以下的自然数中,属于 3 或 5 的倍数的数字之和。
本人小白没有一点思路 求解
作者: pcl_test    时间: 2017-3-16 15:36

  1. @echo off
  2. (for /l %%a in (3,1,999) do (
  3.     set "n="
  4.     set /a "1/(%%a%%3)"||set n=1
  5.     set /a "1/(%%a%%5)"||set n=1
  6.     if defined n set /a s+=%%a
  7. ))>nul 2>&1
  8. echo;%s%
  9. pause
复制代码

作者: happy886rr    时间: 2017-3-16 15:38

本帖最后由 happy886rr 于 2017-3-16 16:34 编辑
  1. @echo off
  2. set/p n=Please input a number:
  3. set/a "n3=(n-1)/3, n5=(n-1)/5, n15=(n-1)/15, S=(3*n3*(n3+1)+5*n5*(n5+1)-15*n15*(n15+1))>>0x01"&call set/p  =Result=:%%S%%
复制代码

作者: 老刘1号    时间: 2017-3-16 20:05

本帖最后由 老刘1号 于 2017-3-16 20:09 编辑

回复 2# pcl_test

   竟敢潜水!


这是笨算法:
  1. '&@(cls&cscript -nologo -e:vbscript "%~0"&PAUSE&EXIT)
  2. num=0
  3. for i = 1 to 1000-1
  4. if i mod 3 = 0 or i mod 5 = 0 then
  5.       num=num+i
  6.     wscript.echo i
  7. end if
  8. next
  9. wscript.echo "总和:"&num
复制代码
较为机智的算法:
  1. '&@(cls&cscript -nologo -e:vbscript "%~0"&PAUSE&EXIT)
  2. num=0
  3. num1=0
  4. num2=0
  5. do until num1 >= 1000-1
  6.     num1=num1+3
  7.     wscript.echo num1
  8.     num=num+num1
  9. loop
  10. do until num2 >= 1000-5
  11.     num2=num2+5
  12. if num2 mod 3 <> 0 then '不枚举是3倍数的
  13.     wscript.echo num2
  14.     num=num+num2
  15. end if
  16. loop
  17. wscript.echo "总和:"&num
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2