汇编网首页登录博客注册
masmaster的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
文章收藏

[2010-08-06 21:26] 算法练习:打印100以内素数

图片载入中
;----------------------------------------------------
  1 ;title  Print winthin 100 prime numbers
  2 assume  cs:code,ds:data,ss:stack
  3 data    segment
  4 tmp0    db      100 dup (0)
  5 tmp1    db      100 dup (0)
  6 divisor db      10
  7 data    ends
  8 stack   segment stack
  9         dw      128 dup (0)
 10 stack   ends
 11
 12 code    segment
 13 start:
 14         mov ax,stack
 15         mov ss,ax
 16         mov sp,256
 17         mov ax,data
 18         mov ds,ax
 19 ;生成一个100以内的奇数序列
 20         mov di,offset tmp0
 21         mov bx,100          
 22         mov cx,98          
 23 L:      push bx             
 24         shr bx,1            
 25         jnc L1              
 26         pop bx              
 27         mov word ptr [di],bx
 28         inc di
 29         jmp L2
 30 L1:
 31         pop bx
 32 L2:
 33         dec bx
 34         loop L
 35 ;;;;;;;;;;;;;;;;;;;;;;;;;
 36         mov si,offset tmp0 
 37         mov di,offset tmp1 
 38         xor ax,ax         
 39 s:                         
 40         mov al,[si]        
 41         cmp al,0          
 42         jz ol
 43         mov bx,si
 44         inc bx
 45 s1:
 46         push ax
 47         cmp byte ptr [bx],0
 48         jz s3
 49         div byte ptr [bx]
 50         cmp ah,0
 51         jz s2
 52         inc bx
 53         pop ax
 54         jmp s1
 55 s3:
 56         mov [di],al
 57         inc di
 58         inc si
 59         jmp s
 60 s2:
 61         pop ax
 62         inc si
 63         jmp s
 64 ;;;;;;;;;;;;;;;;;;;;;;;;;;
 65
 66 ol:     mov byte ptr [di],2
 67 disp:   xor ax,ax
 68         mov al,[di]
 69         cmp al,0
 70         jz over
 71         cmp al,10
 72         ja h
 73         mov dl,al
 74         call show
 75         call kg
 76         dec di
 77         jmp disp
 78 h:
 79         div byte ptr ds:divisor
 80         mov dl,al
 81         mov dh,ah
 82         call show
 83         mov dl,dh
 84         call show
 85         call kg
 86         dec di
 87         jmp disp
 88 ;
 89 over:   mov ah,4ch
 90         int 21h
 91 ;
 92 show    proc uses ax dx
 93         add dl,30h
 94         mov ah,2
 95         int 21h
 96         ret
 97 show    endp
 98 ;
 99 kg      proc uses ax dx
100         mov dl,' '
101         mov ah,2
102         int 21h
103         ret
104 kg      endp
105 ;
106 code    ends
107 end     start
;-----------------------------------------------------
心得:由于质数(素数)都为奇数, 因此,先生成一个奇数的数组。然后用一个外循环一个内循环来逐个做除法,检查余数是否为零。都不是零的就是素数, 否则, 就不是素数。
评论次数(0)  |  浏览次数(1256)  |  类型(程序与练习) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码