برنامه شناسایی اعداد کامل perfect number با زبان اسمبلی

 

برنامه شناسایی  با زبان اسمبلی

قیمت :   ۳۵۰۰ تومان ( سه هزار و پانصد تومان)

دسته :

پروژه های برنامه نویسی زبان اسمبلی

نوع فایل:

.asm , .exe

توضیحات:



توضیحات :

در نظریه اعداد، ، یک عدد صحیح مثبت است که برابر با مجموع مقسوم‌علیه‌های سرهٔ مثبت خود (همهٔ مقسوم‌علیه‌های مثبتش غیر از خود عدد) باشد. همچنین به طور هم ارز، یک عدد کامل، عددی است که نصف مجموع همهٔ مقسوم‌علیه‌های مثبت خود باشد.

نخستین عدد کامل ۶ است. زیرا ۱+۲+۳=۶ یا به طور هم ارز، ۶=۲/(۱+۲+۳+۶). بعد از آن ۲۸ و بعد از آن به ترتیب ۴۹۶ و ۸۱۲۸ قرار دارند.

یک عدد کامل (perfect number) عددی است که با مجموع مقسوم علیه‌های خود (بغیر از خود عدد) برابر می باشد. کوچکترین عدد کامل عبارت است از ۶، زیر داریم:

۶ = ۱ + ۲ + ۳

اعداد کامل بعدی عبارتند از:

۲۸ = ۱ + ۲ + ۴ + ۷ + ۱۴
۴۹۶ = ۱ + ۲ + ۴ + ۸ + ۱۶ + ۳۱ + ۶۲ + ۱۲۴ + ۲۴۸
۸۱۲۸ = ۱ + ۲ + ۴ + ۸ + ۱۶ + ۳۲ + ۶۴ + ۱۲۷ + ۲۵۴ + ۵۰۸ + ۱۰۱۶ + ۲۰۳۲ + ۴۰۶۴

اولین بار اقلیدس در کتاب خود با نام عناصر (Elements) که حدود ٣٠٠ قبل از میلاد نوشته شده بود، به مفهوم عدد کامل اشاره کرد.

اقلیدس این قضیه جالب را نیز در مورد اعداد کامل بیان کرده است:

اگر برای K>1، ۲k-1 یک عدد اول باشد، آنگاه ۲k-1(2k-1) یک عد کامل است.

به عنوان مثال ۲۳-۱=۷ یک عدد اول است، بنابراین ۲۳-۱(۲۳-۱)=۴*۷=۲۸ باید یک عد کامل باشد که صحیح است.

همچنین ۲۵-۱=۳۲-۱=۳۱ نیز یک عدد اول است. بنابراین ۲۵-۱(۲۵-۱)=۱۶*۳۱=۴۹۶ نیز باید عددی کامل باشد که باز هم صحیح است.

برای مشاهده تصویر با اندازه اصلی روی آن کلیک کنید

برای مشاهده تصویر با اندازه اصلی روی آن کلیک کنید

======

بخشهایی از سورس کد اسمبلی این برنامه : 

data segment
buf db 10
db ?
db 10 dup(‘#’)
flag db 1
divisor1 dw 10
divisor2 dw 1
string db 13,10,’please input a number between 1 to 10000:’,13,10,’$’
pointout db 13,10,’please input a symbol:Y/start,N/exit’,13,10,’$’
kk db ?
wrong db 13,10,’please input number characters!’,13,10,’$’
enter db 13,10,’$’
print db 13,10,’all of the complete numbers are:’,13,10,’$’
data ends
;###############
code segment
;####;????????????????????????ds???
assume cs:code,ds:data
start:
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
;###########;main???
main proc far
p1:
lea dx,pointout
mov ah,09h
int 21h ;??’please input a symbol:Y/start,N/exit’,13,10,’$’

mov ah,1
int 21h
cmp al,’n’
je p3
cmp al,’y’
jne p1

;??rinput???,?????????

call rinput
cmp flag,0 ;????????
je p2

;??output ?????????????????????
call output
jmp p1
p2: lea dx,wrong ;??????’please input number characters!’,13,10,’$’
mov ah,09h
int 21h
jmp p1
p3:
mov ax,4c00h ;??
int 21h
ret
main endp
;########; rinput ???
rinput proc near
mov bx,0
mov divisor2,01h
mov divisor1,0ah ;???????

lea dx,string
mov ah,09h
int 21h ;??’please input a number between 1 to 10000:’,13,10,’$’

lea dx,buf
mov ah,0ah ;????????????
int 21h ;??1?10000?????

;????????????????

mov si,2
nextc:
cmp buf[si],0dh ;????????????
je eq1
inc si
jmp nextc
eq1:
sub si,2 ;???????????????
mov cx,si
mov buf+1,cl ;???????????
mov al,buf[1]
cbw
and ax,00ffh
inc si

chang1:
mov al,buf[si] ;???????????

;???????,????????
cmp al,’0′
jb g1
cmp al,’9′
ja g1

mov ah,0h
sub ax,30h
;and ax,000fh????????????ASCII????????
mul divisor2
add bx,ax

mov ax,divisor2
mul divisor1
mov divisor2,ax
dec si
mov dx,0001h
sub dx,si
jnz chang1 ;???????????????

mov flag,1 ;?????,????????1
jmp g2
g1:
mov flag,0 ;?????,????????1
g2:
ret
rinput endp

 

برنامه شناسایی اعداد کامل perfect number با زبان اسمبلی

در تمامی ساعات شبانه روز >> پرداخت آنلاین و دانلود آنی فایل پس از پرداخت. 

 

Related posts

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Translate »