INF.04Algorytmika i Struktury Danych
Numer PESEL i Algorytm Weryfikacji
11-cyfrowy identyfikator ewidencji ludności w Polsce, zawierający zakodowaną datę urodzenia, numer serii, oznaczenie płci oraz cyfrę kontrolną obliczaną z wagami modulo 10.
Struktura numeru PESEL
Numer PESEL (Powszechny Elektroniczny System Ewidencji Ludności) składa się z 11 cyfr w formacie RRMMDDPPPPK:
- RR (cyfry 1–2): Dwie ostatnie cyfry roku urodzenia.
- MM (cyfry 3–4): Miesiąc urodzenia ze zakodowanym stuleciem:
- Lata 1900–1999: miesiąc bez zmian (01 - 12).
- Lata 2000–2099: dodaje się 20 do miesiąca (21 - 32).
- Lata 1800–1899: dodaje się 80 (81 - 92).
- Lata 2100–2199: dodaje się 40 (41 - 52).
- Lata 2200–2299: dodaje się 60 (61 - 72).
- DD (cyfry 5–6): Dzień miesiąca (01 - 31).
- PPPP (cyfry 7–10): Liczba porządkowa serii, w której cyfra 10 oznacza płeć:
- Cyfry parzyste (0, 2, 4, 6, 8) → Kobieta.
- Cyfry nieparzyste (1, 3, 5, 7, 9) → Mężczyzna.
- K (cyfra 11): Cyfra kontrolna.
Algorytm wyznaczania cyfry kontrolnej:
Dla cyfr d₁, d₂, ..., d_10 stosuje się wagi: 1, 3, 7, 9, 1, 3, 7, 9, 1, 3.
S = 1· d₁ + 3· d₂ + 7· d₃ + 9· d₄ + 1· d₅ + 3· d₆ + 7· d₇ + 9· d₈ + 1· d₉ + 3· d_10
Cyfra kontrolna K:
M = S mod 10
K = (10 - M) mod 10
Jeśli reszta M = 0, to K = 0.
CSHARP
public static bool WalidujPesel(string pesel) {
if (pesel == null || pesel.Length != 11 || !pesel.All(char.IsDigit)) return false;
int[] wagi = { 1, 3, 7, 9, 1, 3, 7, 9, 1, 3 };
int suma = 0;
for (int i = 0; i < 10; i++) {
suma += (pesel[i] - '0') * wagi[i];
}
int cyfraKontrolna = (10 - (suma % 10)) % 10;
return cyfraKontrolna == (pesel[10] - '0');
}Pułapki na egzaminie INF.04:
- Kodowanie stuleci: Osoba urodzona 15 maja 2004 roku ma w numerze PESEL cyfry
042515...(miesiąc maj 05 + 20 = 25). - Płeć: O płci decyduje 10. cyfra (przedostatnia), a nie 11. (która jest sumą kontrolną!).
Chcesz sprawdzić to pojęcie w praktyce?
Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Numer PESEL i Algorytm Weryfikacji lub rozpocznij trening.