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+b \equiv c \quad \pmod{10}$

③ $(8a)$nın son basamağı $c$ olmalı
$8a \equiv c \quad \pmod{10}$


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

Örnek 2: $s = 2122122127\mathbf 2$ olsun
$a = 2+2+1+2+2 = 9$
$b = 1+2+2+1+7 = 13$
$a+b = 22, \quad 8a = 72$
son basamakları $c = 2$

Örnek 3: $s = 3260039001\mathbf 4$ olsun
$a = 3+6+0+9+0 = 18$
$b = 2+0+3+0+1 = 6$
$a+b = 24, \quad 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+9b \equiv 0 \pmod{10}$ 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?