• 05-06-2024, 00:55:08
    #1
    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
  • 05-06-2024, 00:59:27
    #2
    Kurumsal PLUS
    4,500 milyon yani 4.5 milyar
  • 05-06-2024, 01:53:36
    #3
    kırk üç seksen
  • 05-06-2024, 02:00:59
    #4
    Muhtemelen 100 milyar civarı
  • 06-06-2024, 00:54:31
    #5
    https://chatgpt.com/share/69ba5880-c...1-6bafbd186e83

    ChatGPT tam olarak hesaplamanın çok uzun sürdüğünü ama yaklaşık olarak değerin 900 milyon olduğunu söylüyor arkadaşlar.