- ·上一篇文章:又一个批处理写的批处理加密工具
- ·下一篇文章:批处理写的留言本
- ·百度中搜索更多的关于“用批处理哥代码验证德巴赫猜想(10000以内)”相关内容
- ·谷歌中搜索更多的关于“用批处理哥代码验证德巴赫猜想(10000以内)”相关内容
- ******申明******
- 本站文章内容有部分为收录网络中其他网友内容,DOS资源站不保证所有的代码都适合你使用。
- 由于编辑匆忙,有可能造成某些脚本文件出现丢失代码或代码无法运行的情况,请网友根据情况自行修改。
- 如果能将出错部分反馈给我,那就更好了。
用批处理哥代码验证德巴赫猜想(10000以内)
说明:验证10000以内的数字是否符合 哥德巴赫猜想
要验证更大的数字,请自行修改代码。
@echo off&title DOS资源站 www.cmdos.net
::code by youxi01@cmd_xp
title 哥德巴赫猜想
REM 验证数值在10000以内,对于超过的10000的数值,个人认为要生成临时文件(质数)以提高
REM 效率
setlocal enabledelayedexpansion
:Start
cls
set flag=1
::这里从数字6开始,前面的4在这里没考虑。
set/p EN=请输入6~10000之间的偶数:
Rem ==============================
set/a var=-1
::简单的判断输入的数字是否合法
set/a var=%EN%>nul 2>nul
if %var% GTR 1 (
set/a var=%EN% %% 2
if !var! NEQ 0 set flag=0) else set flag=0
if %flag%==0 echo. & echo 数字输入非法,请重新输入 &echo. & pause & goto :Start
Rem===============================
echo.
::这里将输入的数字分成两个数字之和,其中第一个数字的值不超过原来数字的一半(避免重复)
set/a Enum=%EN%/2
For /l %%i in (3 2 %Enum%) do (
set/a EN1=%%i
set/a EN2=%EN%-!EN1!
::检测!EN1!是否是质数;如果不是,则将Res1赋值为NO;
call :IsPrime !EN1! Res1
::如果!EN1!是质数;则检测!EN2!是否为质数,如果不是,则将Res2赋值为NO;
if "!Res1!"=="" call :IsPrime !EN2! Res2
::如果!Res2!的值仍为空(即为质数),检测完成,然后退出。
if "!Res2!"=="" echo !EN!可以表示为两个质数之和:!EN1!+!EN2!=%EN%
)
echo.
pause
goto :Start
Rem ============================
:: 以下程序用来检测数字是否是质数
Rem ============================
:IsPrime 被检测数字(参数1) 返回值(参数2)
if %1 GTR 100 (set/a Enum=100) else set/a Enum=%1-2
::先将参数2这个变量清空。
set "%2="
For /l %%i in (3 2 %Enum%) do (
set/a t_num=%1 %% %%i
if !t_num! EQU 0 set %2=NO & goto :eof)

