C# COLLATZ PROBLEMİ

CollatzProblemi Kodları




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CollatzProblemi
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = "Sayı";
            button1.Text = "Hesapla";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int sayi = Convert.ToInt32(textBox1.Text);
            listBox1.Items.Clear();
            while (sayi > 1)
            {
                listBox1.Items.Add(sayi);
                if (sayi % 2 == 0)
                    sayi /= 2;
                else
                    sayi = 3 * sayi + 1;
            }
            listBox1.Items.Add(1);
        }
    }
}




-------------------------------------------------------------
Mars Yolcusu

#CollatzProblemi  C# Programlama  C++ Java


Kodlarda anlamadığınız bir şey olursa yorum yaparsanız yardımcı olurum :)
C# COLLATZ PROBLEMİ C#  COLLATZ PROBLEMİ Reviewed by MARS on Eylül 08, 2017 Rating: 5

1 yorum:

  1. COLLATZ SANISI ÇÖZÜMSÜZ


    GARİP AMA GERÇEK


    Collatz sanısı: m = tek sayı ve x= sıfırdan büyük pozitif tam sayı(1,2,3,4,....k) olmak koşulu ile (2^x)*m)-1 şeklinde yazılan herhangi bir n tek sayısı için bir işlem (3n+1)/2 olarak alındığında, (2^x)*m)-1=n şeklinde yazılan bir sayı için (x) defa (3n+1)/2 şeklinde işlem yapılmak zorunda kalınır. Çünkü (x-1) defa işlem tek sayı çıkar. (x) inci ilem yapıldığında sayı çift sayı olur. Ama yinede bu hesap gözünüzü korkutmasın. İşlem sonucu (2^x)*m)-1=n şeklinde yazılan bir tek sayı (3n+1)/2 şeklinde x. inci işlem yapıldığında (3^x)*m)-1 olarak çift sayı olur. Bu kendi bulduğum formül sayesinde collatz sanısı için çözümün olmadığı bir sayının olabileceğini ispatlıyorum.
    Collatz sanısı çözümsüz
    ispat: test edeceğimiz tek sayıyı (2^x)*m)-1=n olacak halde yazdığımızda her tek sayı için uygulanan (3n+1)/2 işlemi ile ilk çift sayı (x) inci işlemin sonunda oluşur x= sonsuz olduğunda ise çözüm yoktur. Çünkü işlem sonsuz eksi bir defa tek sayı çıkacaktır. Sonsuzuncu işlem yapılsa idi, çift sayı çıkacak idi. ayrıca sonsuz eksi bir ifadesini veren sayı yoktur. Ama sonlu bir sayıyı ifade etmek amacı ile bu terim kullanılır.

    Örnek verecek olursak:
    (2^x)*m)-1=n denkleminde
    x=3 ve m=7 olarak alacak olursak
    (2^3)*7)-1 = n
    (8)*7) -1= n
    (56)-1=n olur
    n=55olur

    Normal hesaplama ile bu işlemi yaparsak işlemin x defa yapıldığını göreceksiniz. (x)=3 olduğuna göre 3 defa işlem yapacağız. yani kısaca (x) sayısı herhangi bir çift sayıyı tek sayı çıkana kadar ardarda iki ile böldüğümüzde kaç defa 2 ile bölüne bildiğini gösterir.
    Biz test edeceğimiz tek sayıya 1 eklediğimizde sayı çift sayı olur. Bu çift sayıyı (2^x)*m ) haline getirip 1 çıkarırsak oluşan sayı yine bizim test yaptığımız tek sayı olur. Son hali ile test sayımız (2^x)*m)-1=n şeklinde olur. Şimdi örneğimizi bu halde yazalım.
    55+1=56 Bu sayının kaç defa iki ile tam olarak bölündüğünü ve en son 2 ile bölümünden sonra çıkan tek sayıyı bulalım. Yani (x) ve (m) sayılarımızı bulalım. Test sayımız zaten belli, yani n=55
    55+1=56 dan

    1) 56/2=28
    2) 28/2=14
    3) 14/2=7
    x=3 ve m=7
    tek sayımız son hali ile (2^3)*7)-1=55 oldu tek sayı için uyguladığımız collatz işlemi (3n+1)/2 idi
    1) işlem (55*3+1)/2=83
    2) işlem (83*3+1)/2=125
    3) işlem (125*3+1)/2=188

    (x) Defa (3n+1)/2 şeklinde yapılan ardışık işlemlerin sonunda oluşan çift sayı (3^x)*m)-1 olacaktır.
    Tek sayımız (2^x)*m)-1=n idi. Değerler yerine konulduğunda (2^3)*7)-1=55 şeklinde olur. Yine aynı şekilde değerleri ilk çift sayının kaç olduğunu bulmak için formülümüzde yerine koyarsak
    (3^x)*m)-1 = (3^3)*7)-1 olur
    (3^3)*7)-1= (27)*7)-1=188 sonuç bu şekilde de bulunur

    Bu formül (2^x)*m)-1=n haline getirilmiş bütün tek sayılar için geçerlidir. Her tek sayı da bu halde yazılır zaten.

    İrfan Aydoğan
    doktor0906@hotmail.com

    YanıtlaSil

Blogger tarafından desteklenmektedir.