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

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

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

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

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

حدس کولاتز (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


   


C++:

int Collatz(int Num) {

int distance = 0;

while (Num > 1) {

cout <<endl<< Num;

distance++;

if (Num % 2 == 1)

Num = 3 * Num + 1;

else

Num /= 2;

}

cout << endl << Num << endl;

return distance;

}



C#:


static int Collatz(int Num)

{

int distance = 0;

while (Num > 1)

{

Console.Write("\r\n" + Num.ToString());

distance++;

if (Num % 2 == 1)

Num = 3 * Num + 1;

else

Num /= 2;

}

Console.Write("\r\n" + Num.ToString());

return distance;

}



VB.NET:


Function Collatz(ByVal Num As Integer) As Integer

Dim distance As Integer = 0

While Num > 1

Console.Write(vbNewLine + Num.ToString())

distance += 1

If Num Mod 2 = 1 Then

Num = 3 * Num + 1

Else

Num /= 2

End If

End While

Console.Write(vbNewLine + Num.ToString())

Return distance

End Function



F#:


let Collatz(Num : int) = 

    let mutable distance : int = 0

    let mutable num : int = Num

    while num > 1 do

        Console.WriteLine(num.ToString())

        distance <- distance + 1

        if num % 2 = 1 then

            num <- 3 * num + 1

        else

            num <- num / 2

    Console.WriteLine(num.ToString())

    distance



Python:


def Collatz(Num):

    distance = 0

    while Num > 1:

        print(int(Num))

        distance += 1

        if Num % 2 == 1:

            Num = 3 * Num + 1

        else:

            Num /= 2

    print(int(Num), "\r\n")

    return distance


دانلود سورس کدها:

C++

C#

VB.NET

F#

Python

نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.