17.03.2020

TC Kimlik Numarası

TC devletinin en başarılı IT uygulaması, her vatandaşa verilen kimlik numarası olabilir. İçinde başka bilgi taşımadığı için kısa, kısalığına rağmen rastgele bulunması zor bir sayı... Bankaların verdiği IBAN ve belediyelerin kullandığı Adres Kayıt numarası ile kıyaslayınca bu başarı açıkça görülüyor.

Rastgele seçilen bir sayının kimlik numarası olma ihtimali %1, çünkü son iki basamak diğer 9 basamaktan hesaplanıyor. Böylece toplam 900 milyon farklı numara çıkar ki bu da TC için uzun süre yeterli...

Son iki basamağın hesap yöntemini değil de, verilen s sayısının TC kimlik numarası olabilmesi için gereken üç kuralı örneklerle inceleyelim:

① Verilen s, 11 basamaklı bir sayı olmalı (ilk basamak 0 olamaz)

Sayımız bu testi geçiyorsa, üç değere bakalım:
a=0,2,4,6,8. basamakların toplamı
b=1,3,5,7,9. basamakların toplamı
c=s'nin son basamağı

(a+b)nin son basamağı c olmalı
a+bc(mod10)

(8a)nın son basamağı c olmalı
8ac(mod10)


Örnek 1: s=12345678950 olsun
a=1+3+5+7+9=25
b=2+4+6+8+5=25
a+b=50,8a=200
son basamakları c=0

Örnek 2: s=21221221272 olsun
a=2+2+1+2+2=9
b=1+2+2+1+7=13
a+b=22,8a=72
son basamakları c=2

Örnek 3: s=32600390014 olsun
a=3+6+0+9+0=18
b=2+0+3+0+1=6
a+b=24,8a=144
son basamakları c=4


JavaScript uygulaması

Bu kuralları JS fonksiyonu olarak uygulayalım. Hata yoksa true, varsa hatayı özetleyen bir string geri dönüyor:
Örnek sayfamız ve referanslar şu linkte:
https://maeyler.github.io/JS/math/TCKimlik.html


Sorular

1. Verilen iki kuraldan, 7a+9b0(mod10) kuralını kanıtlayın

2. En küçük ve en büyük TC kimlik numaralarını bulun

3. Kimlik numaralarının çift sayı olması gerektiğini hangi kural söylüyor?