گروه مهندسی نرم افزار مازند پرداز

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

گروه مهندسی نرم افزار مازند پرداز

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

اعداد کامل

اعداد کامل


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


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


الگوریتم کلی اعداد اول: 

Function IsPerfectNumber (Num) As Boolean

SumOfDivisors <-- 1

Counter <-- 2

MaxCounter <-- Num / 2

while Counter <= MaxCounter do

if Num mod Counter = 0 then

SumOfDivisors <-- SumOfDivisors + Counter

if SumOfDivisors > Num then

return false

Counter <-- Counter + 1

if SumOfDivisors = Num then

return true

return false

  

ادامه مطلب ...

پیاده سازی الگوریتم حدس کولاتز

حدس کولاتز (Collatz conjecture) 


حدس کولاتز یکی از حدس‌های حل نشده در ریاضیات است. این حدس به افتخار لوتار کولاتز، که این موضوع را در سال۱۹۳۷ مطرح کرد، حدس کولاتز نام گرفت. این حدس همچنین به عنوان حدس 3n+1 نیز شناخته می‌شود. این گونه حدس‌ها می‌پرسد که آیا یک رشتهٔ خاص از اعداد، صرف نظر از این که چه عددی را به عنوان عدد اولیه انتخاب می‌کنیم، همیشه به یک صورت تمام می‌شود. (منبع : ویکی پدیا)


حالت کلی الگوریتم به صورت زیر است: 

void Collatz(int Num):

while Num > 1 do:

show Num

if Num mod 2 == 1 then

Num <- 3 * Num + 1

Else

Num <- Num / 2

show Num


   ادامه مطلب ...

الگوریتم کوله پشتی کسری

حل مسأله کوله پشتی کسری:


فرض کنید شما یک کوله پشتی در اختیار دارید که مانند هر کوله پشتی دیگری می تواند وزن معینی از بار را تحمل کند که در این مسأله maxweight مشخص شده است. مجموعه ای از اشیا دارید که هر کدام دارای وزن و ارزش مشخصی هستند و تمام اشیاء موجود در این مجموعه به گونه ای هستند که می توان نه تنها تمام آن شئ را برداشت بلکه می توان شئ را خرد کرده و بخش کمتری از شئ را برداشت که میزان نسبت ارزش به وزن آن شئ حفظ شود و آن بخش کمتر نیز به همان میزان ارزش داشته باشد.

ورودی های این مسأله عبارتند از :

  • values که یک آرایه از نوع اعشاری می باشد و شامل ارزش هر کدام از اشیا است.
  • weights نیز یک آرایه از نوع اعشاری است و شامل وزن هر کدام از اشیا است.
  • maxweight  از نوع اعشاری که حداکثر ظرفیت کوله پشتی را نشان می دهد.

متغیرهای الگوریتم عبارتند از:

  • strout از نوع رشته ای و به عنوان خروجی تابع در نظر گرفته می شود.
  • sum از نوع اعشاری که مجموع ارزش اشیائ قرار داده شده در کوله پشتی را در خود نگه می دارد.
  • ratio یک آرایه از نوع اعشاری که نسبت ارزش به وزن هر شی را اندیس معادل آن نگه می دارد.
  • pickedItems یک آرایه از نوع اعشاری که مشخص می کند کدام آیتم ها و به چه اندازه ای انتخاب شده اند. 
ادامه مطلب ...

توابع محاسبه ب.م.م (GCD) و ک.م.م (LCM) دو عدد به زبان های مختلف

توابع محاسبه ب.م.م (GCD) و ک.م.م (LCM) دو عدد به زبان های مختلف : 

F#: 

let GCD(a : int, b : int) : int = 
    let mutable rv : int = 0
    let mutable ia : int = a
    let mutable ib : int = b
    while rv = 0 do
        if ia = 0 then
            rv <- ib
        else
            ib <- ib % ia
        if ib = 0 then
            rv <- ia
        else
            ia <- ia % ib
    rv 
   
ادامه مطلب ...

بدست آوردن کوچکترین مضرب مشترک (ک.م.م) و بزرگترین مقسوم علیه مشترک (ب.م.م) دو یا چند عدد.

به منظور محاسبه کوچکترین مضرب مشترک و بزرگترین مقسوم علیه مشترک دو عدد می بایست اعمال زیر را انحام دهیم : 

1 -  برای ب.م.م (GCD) دو عدد مانند a و b:

  1. شروع
  2. اگر a=0 
  3. b را برگردان
  4. حاصل تقسیم صحیح b بر a را درون b قرار بده
  5. اگر b=0 آنگاه
  6. a را برگردان
  7. حاصل تقسیم صحیح a بر b را درون a قرار بده
  8. برو به مرحله 2 
ادامه مطلب ...