<div dir="ltr"><div class="gmail_default"><font face="verdana, sans-serif">Wagner, boa tarde!</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Você pode adaptar de outras linguagens. No link que segue está bem fácil de entender:</font></div><div class="gmail_default" style=""><font face="verdana, sans-serif"><<a href="http://www.devmedia.com.br/validando-o-cpf-em-uma-aplicacao-java/22097">http://www.devmedia.com.br/validando-o-cpf-em-uma-aplicacao-java/22097</a>><br></font></div><div class="gmail_default" style=""><font face="verdana, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="verdana, sans-serif">Fiz um primeiro exercício, mas não posso garantir que esteja plenamente funcional. Sugiro apenas como ponto de partida. Quem quiser melhorar o código é bem-vindo.</font></div><div class="gmail_default" style=""><font face="verdana, sans-serif"><br></font></div><div class="gmail_default" style=""><div class="gmail_default"><font face="monospace, monospace">### <code r></font></div><div class="gmail_default"><font face="monospace, monospace">isCPF <- function(cpf.str) {</font></div><div class="gmail_default"><font face="monospace, monospace">     cpf <- gsub('[^[:digit:]]+', '', cpf.str)</font></div><div class="gmail_default"><font face="monospace, monospace">     </font></div><div class="gmail_default"><font face="monospace, monospace">     ### primeiro dígito verificador:</font></div><div class="gmail_default"><font face="monospace, monospace">     cpf.1 <- as.numeric(strsplit(substr(cpf, 1,9), "")[[1]])</font></div><div class="gmail_default"><font face="monospace, monospace">     sm.1  <- sum(cpf.1 * 10:2) ### 249</font></div><div class="gmail_default"><font face="monospace, monospace">     dig.1 <- ifelse((sm.1 %% 11)==0 | (sm.1 %% 11)>9, 0, 11-(sm.1 %% 11)) ### 4</font></div><div class="gmail_default"><font face="monospace, monospace">     ### se o resto da divisão for 10 ou 11, o dígito será 0; </font></div><div class="gmail_default"><font face="monospace, monospace">     </font></div><div class="gmail_default"><font face="monospace, monospace">     ### segundo dígito verificador:</font></div><div class="gmail_default"><font face="monospace, monospace">     cpf.2 <- as.numeric(strsplit(substr(cpf, 1,10), "")[[1]])</font></div><div class="gmail_default"><font face="monospace, monospace">     sm.2  <- sum(cpf.2 * 11:2) ### 299</font></div><div class="gmail_default"><font face="monospace, monospace">     dig.2 <- ifelse((sm.2 %% 11)==0 | (sm.2 %% 11)>9, 0, 11-(sm.2 %% 11)) ### 9</font></div><div class="gmail_default"><font face="monospace, monospace">     </font></div><div class="gmail_default"><font face="monospace, monospace">     ### testa dígitos calculados</font></div><div class="gmail_default"><font face="monospace, monospace">     ver <- paste0(dig.1, dig.2) == substr(cpf, 10,11)</font></div><div class="gmail_default"><font face="monospace, monospace">     return(ver); print(ver)</font></div><div class="gmail_default"><font face="monospace, monospace">}</font></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div><div class="gmail_default"><font face="monospace, monospace">isCPF("546.471.429-49") ### TRUE</font></div><div class="gmail_default"><font face="monospace, monospace">isCPF("546.471.429-99") ### FALSE</font></div><div class="gmail_default"><font face="monospace, monospace">### </code></font></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><font face="arial, helvetica, sans-serif" style="font-size:small"><div style="font-family:'trebuchet ms',sans-serif;display:inline">​</div>================================================<br>Éder Comunello</font><div style="font-size:small"><span style="font-family:arial,helvetica,sans-serif">PhD Student in Agricultural Systems Engineering (USP/Esalq)</span><br></div><div><span style="font-size:small">Brazilian Agricultural Research Corporation (</span><font face="arial, helvetica, sans-serif" style="font-size:small">Embrapa)</font><div style="font-size:small"><font face="arial, helvetica, sans-serif">Dourados, MS, Brazil [</font>22 16.5'S, 54 49.0'W<span style="font-family:arial,helvetica,sans-serif">]</span></div><div><div><br></div><div><br></div></div><div style="font-size:small"><br></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">Em 27 de janeiro de 2016 12:12, Wagner Tassinari <span dir="ltr"><<a href="mailto:wtassinari@gmail.com" target="_blank">wtassinari@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Olá pessoal, <div><br></div><div>Alguém conhece algum código em R para verificar a consistência do número do CPF ?</div><div><br></div><div>Obrigado<span class="HOEnZb"><font color="#888888"><br clear="all"><div><br></div>-- <br><div>Wagner S. Tassinari<br>Departamento de Matemática<br>Universidade Federal Rural do Rio de Janeiro.<br>BR-465, Km 7 - Seropedica, RJ - Brasil<br>CEP: 23890-000 <br>Skype: wagner.tassinari<br><a href="mailto:wtassinari@gmail.com" target="_blank">wtassinari@gmail.com</a><br><a href="mailto:tassinari@ufrrj.br" target="_blank">tassinari@ufrrj.br</a><br>-------------------------------------------------------<br>"Statistical thinking will one day be as necessary for efficient citizenship as the ability to read and write."  (H.G.Wellis)<br></div>
</font></span></div></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div></div>