Zalisha nambari halali za CPF (Cadastro de Pessoas Físicas) za bahati nasibu kwa ajili ya majaribio. Chombo hiki kinaunda CPFs zinazofuata muundo rasmi wa Kibrasil na sheria za uthibitishaji, bila kutumia taarifa zozote halisi za kibinafsi.
CPF (Cadastro de Pessoas Físicas) ni kitambulisho cha kipekee kinachotolewa kwa raia na wakazi wa Brazil kwa ajili ya malengo ya ushuru. Generator hii inaunda nambari za CPF halali, za bahati nasibu kwa ajili ya matumizi ya majaribio. Ni muhimu kutambua kwamba CPFs hizi zilizozalishwa hazihusiani na watu halisi na zinapaswa kutumika tu katika mazingira ya majaribio.
CPF ina sehemu 11:
Muundo huu kawaida huwakilishwa kama: XXX.XXX.XXX-XX
Algorithimu ya uthibitishaji wa CPF inahakikisha uhalali wa nambari. Hapa kuna jinsi inavyofanya kazi:
Fomula ya kuunda CPF halali ni kama ifuatavyo:
1def generate_cpf():
2 # Zalisha sehemu 9 za bahati nasibu
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Hesabu nambari ya kwanza ya uhakiki
6 sum_1 = sum((10 - i) * digit for i, digit in enumerate(base_cpf))
7 check_digit_1 = (sum_1 * 10 % 11) % 10
8
9 # Hesabu nambari ya pili ya uhakiki
10 sum_2 = sum((11 - i) * digit for i, digit in enumerate(base_cpf + [check_digit_1]))
11 check_digit_2 = (sum_2 * 10 % 11) % 10
12
13 return base_cpf + [check_digit_1, check_digit_2]
14
Generator inatekeleza hatua zifuatazo:
Hapa kuna mifano ya CPFs zilizozalishwa:
Generator ya CPF ni muhimu katika hali mbalimbali za maendeleo ya programu na majaribio:
Ingawa CPF ni kitambulisho kikuu cha mtu binafsi nchini Brazil, kuna vitambulisho vingine vinavyoweza kutumika katika muktadha maalum:
CPF ilianzishwa nchini Brazil mwaka 1965 kama sehemu ya juhudi kubwa za kuboresha mfumo wa ushuru wa nchi. Awali, ilitumika hasa kwa malengo ya ushuru wa mapato, lakini kwa muda, matumizi yake yalienea katika maeneo mengine mbalimbali ya utawala na biashara nchini Brazil.
Milele muhimu katika historia ya CPF:
Leo, CPF ni sehemu muhimu ya mwingiliano wa raia na wakazi wa Brazil na huduma za serikali, taasisi za kifedha, na shughuli nyingi za kibiashara.
Hapa kuna vipande vya kanuni za kuunda na kuthibitisha CPFs katika lugha mbalimbali za programu:
1import random
2
3def generate_cpf():
4 cpf = [random.randint(0, 9) for _ in range(9)]
5 for _ in range(2):
6 value = sum((cpf[num] * ((len(cpf) + 1) - num) for num in range(len(cpf)))) % 11
7 cpf.append(11 - value if value > 1 else 0)
8 return ''.join(map(str, cpf))
9
10def validate_cpf(cpf):
11 numbers = [int(digit) for digit in cpf if digit.isdigit()]
12 if len(numbers) != 11 or len(set(numbers)) == 1:
13 return False
14 for i in range(9, 11):
15 value = sum((numbers[num] * ((i + 1) - num) for num in range(i))) % 11
16 if numbers[i] != (11 - value if value > 1 else 0):
17 return False
18 return True
19
20## Matumizi ya mfano
21cpf = generate_cpf()
22print(f"CPF iliyozalishwa: {cpf}")
23print(f"Ni halali: {validate_cpf(cpf)}")
24
1function generateCPF() {
2 const cpf = Array.from({length: 9}, () => Math.floor(Math.random() * 10));
3 for (let i = 0; i < 2; i++) {
4 let sum = cpf.reduce((acc, cur, idx) => acc + cur * (cpf.length + 1 - idx), 0);
5 let digit = 11 - (sum % 11);
6 cpf.push(digit > 9 ? 0 : digit);
7 }
8 return cpf.join('');
9}
10
11function validateCPF(cpf) {
12 const numbers = cpf.match(/\d/g).map(Number);
13 if (numbers.length !== 11 || new Set(numbers).size === 1) return false;
14 for (let i = 9; i < 11; i++) {
15 let sum = numbers.slice(0, i).reduce((acc, cur, idx) => acc + cur * (i + 1 - idx), 0);
16 let digit = 11 - (sum % 11);
17 if (numbers[i] !== (digit > 9 ? 0 : digit)) return false;
18 }
19 return true;
20}
21
22// Matumizi ya mfano
23const cpf = generateCPF();
24console.log(`CPF iliyozalishwa: ${cpf}`);
25console.log(`Ni halali: ${validateCPF(cpf)}`);
26
1import java.util.Random;
2
3public class CPFGenerator {
4 private static final Random random = new Random();
5
6 public static String generateCPF() {
7 int[] cpf = new int[11];
8 for (int i = 0; i < 9; i++) {
9 cpf[i] = random.nextInt(10);
10 }
11 cpf[9] = calculateCheckDigit(cpf, 10);
12 cpf[10] = calculateCheckDigit(cpf, 11);
13 return formatCPF(cpf);
14 }
15
16 private static int calculateCheckDigit(int[] cpf, int factor) {
17 int sum = 0;
18 for (int i = 0; i < factor - 1; i++) {
19 sum += cpf[i] * (factor - i);
20 }
21 int result = 11 - (sum % 11);
22 return result > 9 ? 0 : result;
23 }
24
25 private static String formatCPF(int[] cpf) {
26 return String.format("%d%d%d.%d%d%d.%d%d%d-%d%d",
27 cpf[0], cpf[1], cpf[2], cpf[3], cpf[4], cpf[5], cpf[6], cpf[7], cpf[8], cpf[9], cpf[10]);
28 }
29
30 public static boolean validateCPF(String cpf) {
31 cpf = cpf.replaceAll("[^0-9]", "");
32 if (cpf.length() != 11) return false;
33 int[] numbers = cpf.chars().map(Character::getNumericValue).toArray();
34 if (allEqual(numbers)) return false;
35 int digit10 = calculateCheckDigit(numbers, 10);
36 int digit11 = calculateCheckDigit(numbers, 11);
37 return numbers[9] == digit10 && numbers[10] == digit11;
38 }
39
40 private static boolean allEqual(int[] array) {
41 for (int i = 1; i < array.length; i++) {
42 if (array[i] != array[0]) return false;
43 }
44 return true;
45 }
46
47 public static void main(String[] args) {
48 String cpf = generateCPF();
49 System.out.println("CPF iliyozalishwa: " + cpf);
50 System.out.println("Ni halali: " + validateCPF(cpf));
51 }
52}
53
Mifano hii inaonyesha jinsi ya kuunda na kuthibitisha CPFs katika Python, JavaScript, na Java. Unaweza kubadilisha hizi kazi kwa mahitaji yako maalum au kuziunganisha katika mifumo mikubwa inayohitaji usimamizi wa CPF.
Unapotumia CPFs zilizozalishwa, ni muhimu kuzingatia mambo yafuatayo:
Gundua zana zaidi ambazo zinaweza kuwa na manufaa kwa mtiririko wako wa kazi