This commit is contained in:
Lucas F. 2026-07-16 11:08:24 -03:00
commit d161ab35a7
5 changed files with 198 additions and 0 deletions

57
main.go Normal file
View file

@ -0,0 +1,57 @@
package main
import (
"flag"
"fmt"
"math/rand/v2"
"strings"
)
func main() {
onlyNum := flag.Bool("num", false, "generate only numbers (no formatting)")
flag.Parse()
cpf := generateCPF()
if *onlyNum {
fmt.Println(cpf)
} else {
fmt.Printf("%s.%s.%s-%s\n", cpf[:3], cpf[3:6], cpf[6:9], cpf[9:])
}
}
func generateCPF() string {
digits := make([]int, 11)
for i := range 9 {
digits[i] = rand.IntN(10)
}
sum := 0
for i := range 9 {
sum += digits[i] * (10 - i)
}
rem := sum % 11
if rem < 2 {
digits[9] = 0
} else {
digits[9] = 11 - rem
}
sum = 0
for i := range 10 {
sum += digits[i] * (11 - i)
}
rem = sum % 11
if rem < 2 {
digits[10] = 0
} else {
digits[10] = 11 - rem
}
var result strings.Builder
for _, d := range digits {
fmt.Fprintf(&result, "%d", d)
}
return result.String()
}