输入一个数,判断该数否属于数列 1、2、4、5、7、9、10、12、14、16、17、19、21、23、25、······, 如果属于该数列,输出“YES”,否则输出“NO”。

(可能有用的算法:用减奇数次数的方法,求一个数的近似平方根,这个平方根是一个整数。如求 17 的平方根,可以用 17 相继减去奇数 1、3、5、7、…,当结果为负数或 0 时停止,即:17-1-3-5-7-9<0,可以看出,17 在减去 5 次奇数后结果变为负数,可以近似认为 17 的平方根在 4 与 5 之间。25-1-3-5-7-9=0,25 的平方根为 5)

DATAS SEGMENT  
    yes db 'YES',0dh,0ah,24h
    no db 'NO',0dh,0ah,24h
    x dw 1
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    mov bx,x	
    mov cx,0	;存根
    mov dx,-1	;2(cx)-1
    cmp bx,1	;如果x<1,明显不属于数列
    jl disno
    
    rotate:
    	inc cx
    	add dx,2
    	sub bx,dx
    	cmp bx,0
    	jg rotate
    
    add bx,dx		;负数,回溯
    test bx,01h		;奇数属于数列
    jz disno
    lea dx,yes
    jmp display
    disno:
    	lea dx,no
    display:
    	mov ah,9
    	int 21h
       
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值