diff --git a/tutorial-challenge-validador-cpf/Main.java b/tutorial-challenge-validador-cpf/Main.java
new file mode 100644
index 0000000..84d6c90
--- /dev/null
+++ b/tutorial-challenge-validador-cpf/Main.java
@@ -0,0 +1,85 @@
+import java.util.Scanner;
+
+public class Main {
+ public static void main(String[] args) {
+ // validador cpf
+
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.println("===== VALIDADOR CPF =====");
+ System.out.println("Digite o CPF: ");
+ String cpf = scanner.nextLine();
+
+ boolean teste = validarCPF(cpf);
+
+ if (teste == true) {
+ System.out.println("CPF Válido");
+ } else {
+ System.out.println("CPF Inválido");
+ }
+
+ scanner.close();
+ }
+
+ public static boolean validarCPF(String cpf) {
+ cpf = cpf.replace(".", "");
+ cpf = cpf.replace("-", "");
+
+ int multiplicador = 10;
+ double soma = 0;
+ double modulo = 0;
+
+ if (cpf.length() == 11) {
+ //Primeiro passo: armazena cada digito em um array
+ int[] digitos = new int[11];
+ int[] digitosVerificadores = new int[2];
+
+ for (int i = 0; i < 11; i++) {
+ digitos[i] = Integer.parseInt(cpf.substring(i, i + 1));
+ }
+
+ //Segundo passo: multiplica-se cada um dos numeros, da direita para a esquerda por numeros crescentes a partir de 2 e armazena os resultador em uma soma
+ for (int i = 0; i < 9; i++) {
+ soma += digitos[i] * multiplicador;
+ multiplicador--;
+ }
+
+ //Terceiro passo: calcula o modulo da soma por 11
+ modulo = soma % 11;
+
+ //Quarto passo: define o primeiro digito verificador
+ if (modulo < 2) {
+ digitosVerificadores[0] = 0;
+ } else {
+ digitosVerificadores[0] = 11 - (int) modulo;
+ }
+
+ //Quinto passo: reinicia a soma e o multiplicador
+ soma = 0;
+ multiplicador = 11;
+ for (int i = 0; i < 10; i++) {
+ soma += digitos[i] * multiplicador;
+ multiplicador--;
+ }
+
+ //Sexto passo: calcula o modulo da soma por 11
+ modulo = soma % 11;
+
+ //Setimo passo: define o segundo digito verificador
+ if (modulo < 2) {
+ digitosVerificadores[1] = 0;
+ } else {
+ digitosVerificadores[1] = 11 - (int) modulo;
+ }
+
+ //Oitavo passo: compara os digitos verificadores com os digitos do cpf
+ if (digitosVerificadores[0] == digitos[9] && digitosVerificadores[1] == digitos[10]) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/tutorial-challenge-validador-cpf/README.MD b/tutorial-challenge-validador-cpf/README.MD
new file mode 100644
index 0000000..c8be851
--- /dev/null
+++ b/tutorial-challenge-validador-cpf/README.MD
@@ -0,0 +1,19 @@
+### Validador CPF
+
+Dado um número de CPF, o algoritmo deve validar se o número dado é um número válido.
+Detalhes de como o cálculo funciona pode ser encontrado aqui
+
+Descrição da Função
+A função deve ser capaz de receber o CPF como Integer ou String.
+
+Se for String, deve retirar pontos para manter somente os números.
+
+Em seguida, deve fazer os cálculos da validação e retornar true se o número passado for válido ou false se for invalido.
+
+Como opção, a função pode também excluir sequências de números que são conhecidamente inválidos antes de começar os cálculos
+
+Exemplo de Entrada
+"108.305.810-06"
+
+Exemplo de Saída
+true
\ No newline at end of file