Merhaba arkadaşlar gece gece kafama takılan bir soru oldu
Biliyorsunuz ki tc kimlik numaramız random bir numara değil belirli kurallara uygun halde üretiliyor.
<?php
function tcKimlikNoDogrula($tcKimlikNo) {
// TC Kimlik Numarası 11 karakterden oluşmalıdır.
if (strlen($tcKimlikNo) != 11) {
return false;
}
// TC Kimlik Numarası sadece rakamlardan oluşmalıdır.
if (!ctype_digit($tcKimlikNo)) {
return false;
}
// İlk hane 0 olamaz.
if ($tcKimlikNo[0] == '0') {
return false;
}
// 10. hane tek sayı olmalıdır.
if ($tcKimlikNo[9] % 2 != 0) {
return false;
}
// İlk 10 hanenin toplamının birler basamağı, 11. haneye eşit olmalıdır.
$sumOfFirstTenDigits = 0;
for ($i = 0; $i < 10; $i++) {
$sumOfFirstTenDigits += $tcKimlikNo[$i];
}
if ($sumOfFirstTenDigits % 10 != $tcKimlikNo[10]) {
return false;
}
// 1, 3, 5, 7 ve 9. hanelerin toplamının 7 katından, 2, 4, 6 ve 8. hanelerin toplamının çıkarılmasıyla elde edilen sonucun birler basamağı, 10. haneye eşit olmalıdır.
$oddSum = $tcKimlikNo[0] + $tcKimlikNo[2] + $tcKimlikNo[4] + $tcKimlikNo[6] + $tcKimlikNo[8];
$evenSum = $tcKimlikNo[1] + $tcKimlikNo[3] + $tcKimlikNo[5] + $tcKimlikNo[7];
$total = ($oddSum * 7 - $evenSum) % 10;
if ($total != $tcKimlikNo[9]) {
return false;
}
return true;
}
// Kullanıcıdan TC Kimlik Numarası alalım.
$tcKimlikNo = '12345678901'; // Buraya doğrulamak istediğiniz TC Kimlik Numarasını girin.
// Doğrulama sonucunu kontrol edelim.
if (tcKimlikNoDogrula($tcKimlikNo)) {
echo 'Geçerli bir TC Kimlik Numarası.';
} else {
echo 'Geçersiz bir TC Kimlik Numarası.';
}
?>Bu şekilde tc kimlik numarasının doğru olup olmadığını kontrol edebiliriz. Peki bu kurallara uygun olarak kaç tane tc kimlik numarası üretilebiliriz?
<?php
function count_valid_tc_numbers() {
$count = 0;
// İlk hane (1-9 arasında olmalı)
for ($first_digit = 1; $first_digit <= 9; $first_digit++) {
// Diğer 8 hane (0-9 arasında olmalı)
for ($d2 = 0; $d2 <= 9; $d3 = 0; $d3 <= 9; $d4 = 0; $d4 <= 9; $d5 = 0; $d5 <= 9; $d6 = 0; $d6 <= 9; $d7 = 0; $d7 <= 9; $d8 = 0; $d8 <= 9; $d9 = 0; $d9 <= 9; $d9++) {
// 1, 3, 5, 7 ve 9. hanelerin toplamı
$odd_sum = $first_digit + $d3 + $d5 + $d7 + $d9;
// 2, 4, 6 ve 8. hanelerin toplamı
$even_sum = $d2 + $d4 + $d6 + $d8;
// 10. hane (7 * odd_sum - even_sum) % 10 olmalı
$tenth_digit = (7 * $odd_sum - $even_sum) % 10;
// İlk 10 hanenin toplamının birler basamağı 11. hane olmalı
$sum_of_first_ten = $first_digit + $d2 + $d3 + $d4 + $d5 + $d6 + $d7 + $d8 + $d9 + $tenth_digit;
$eleventh_digit = $sum_of_first_ten % 10;
// 10. hane tek sayı olmalı
if ($tenth_digit % 2 == 1) {
$count++;
}
}
}
return $count;
}
echo count_valid_tc_numbers();
?>Benim bunu hesaplattıracak zamanım yok

sorunun cevabını bilen varsa bu gereksiz bilgiyi benimle paylaşırsa ok sevinirim