Tc Kimlik Numarası Algortiması

T.C. Kimlik No, onbir haneden oluşan, Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü tarafından Türkiye Cumhuriyeti vatandaşlarına verilmiş 11 rakamdan oluşan kişiye özgü bir sayıdır.

Üzerinde basit bir pariteyle hata bulma özelliği bulunmaktadır; ilk 10 rakamın toplamının birler basamağı, 11. rakamı vermekte.

Ayrıca; 1, 3, 5, 7 ve 9. rakamın toplamının 7 katı ile 2, 4, 6 ve 8. rakamın toplamının 9 katının toplamının birler basamağı 10. rakamı; 1, 3, 5, 7 ve 9. rakamın toplamının 8 katının birler basamağı 11. rakamı vermektedir.

[tr.wikipedia.org]

Algoritmamız yukarıda açık bir şekilde anlatılmış. Aşağıda kodları vereceğim kodu anlamak istiyorsanız bir kağıt kalem alın ve adım adım işleyin yok ben anlamam sadece projeme eklerim derseniz de eyvallah 🙂

Bir tc yollayalım metodumuza:

 public int controlTc(long tc) {


            return controlTc(partial(tc));
        }

Tc numaramızı parçalayalım yani: 11111111111 ise -> 1-1-1-1-1-1-1-1-1-1-1 gibi.

 public long[] partial(long tc)
        {
            long[] array = new long[12];
            try
            {
               
                int counter = 2;
                long one = tc % 10;
                long last = 0;
                long counterPart = 10;
                array[1] = one;
                for (long i = 100; i <= 100000000000; i = i * 10)
                {

                    array[counter] = tc % i;
                    last = array[counter] - one;
                    last = last / counterPart;
                    array[counter] = last;
                    one = tc % i;
                    counterPart = counterPart * 10;

                    counter++;
                }
                return array;
            }
            catch { return array; }
           

            

        }

En son işlem ise işlemleri yapıp kontrol etmek:

 public int controlTc(long[] array)
        {

          


            long singleSum = (array[11] + array[9] + array[7] + array[5]+array[3]);
            long coupleSum = (array[10] + array[8] + array[6] + array[4]);
            long firstTenSum = (array[11]+array[10]+array[9]+array[8]+array[7]+array[6]+array[5]+array[4]+array[3]+array[2]);

            long sumTen = (singleSum * 7)+ (coupleSum * 9);
            long sumEleven = (singleSum * 8);
            long sumFirstSum = firstTenSum % 10;

            long sumOneTen = sumTen % 10;
            long sumOneEleven = sumEleven % 10;

            if (sumOneTen == array[2] && sumOneEleven == array[1] && sumFirstSum==array[1])
            {

                return 1;

            }

            else
            {

                return 0;
            }
          
        }

Kendi projemde de kullandığım bir algoritma oldu. Eminim bundan iyisi vardır. Adım adım gidiyoruz. Allah’a emanet 🙂

4 thoughts on “Tc Kimlik Numarası Algortiması

  1. Hep merak etmiştim şu yazılımcılar nasıl oluyor da TC üretebiliyorlar, TC çok karışık çünkü diye 🙂 Teşekkürler 👏

Bir Cevap Yazın