Bien chers amis @ Futura-Sciences.
J'ai un problème avec les nombres et la suite de Kaprekar.
Je voudrais savoir s'il y a une utilité pratique à ces nombre et à la suite de Kaprekar.
Je voudrais aussi savoir pourquoi le checksum des constantes donnent toujours un nombre divisible par 9 ?
Pour toutes fins utiles, j'annexe une petite routine pour déterminer si un nombre est de Kaprekar et pour en donner la suite, ainsi que la longueur du cycle :
=====
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
<base target="_top">
<title>Nombre et Suite de Kaprekar</title>
<meta content="30 days" name=Revisit-after>
<meta name=ROBOTS content="INDEX,FOLLOW">
<meta http-equiv=Page-Enter content="RevealTrans(Duration= 3,Transition=23)">
<meta http-equiv=Page-Exit content="RevealTrans(Duration= 3,Transition=23)">
<meta http-equiv=Content-Language content=fr-be>
<meta name=Title content="Logiciel de Kaprekar (nombres et suites)|Mathématique">
<meta name=Created content="jeudi 9 février 2017 - 23:07:00">
<meta name=Modified content="vendredi 10 février 2017 - 15:30:50">
<meta name=description content="Logiciel de génération de la suite de Fibonacci et Nombre d'Or">
<meta name=keywords content="Kaprekar,anagramme,cy cle,diagramme,dattatreya ramachandra kaprekar,algorithmesséquence,d egenerate case,cas taré,itération,structure,patte rn,dégénéré">
<meta name="author" content="Dr. Jean-Baptiste Dadet DIASOLUKA Nzoyifuanga Luyalu (CNOM : 0866) - Ophtalmologiste">
<meta name="author-address" content="diassites@operamail.c om">
<meta name="author-site" content="http://diasmath.blogg.org">
<meta name="author-site2" content="http://www.amessi.org/diasoluka">
<meta name="author-site2" content="https://gha.centerblog.net">
<meta name="author-site2" content="http://diasoluyalu.exactpages.com">
<meta name="author-site2" content="http://diassites.0pi.com/diasmath">
<style>
input {background:#3FB0A5;color:yell ow;text-align:center;font-weight:900}
</style>
</head>
<body>
<form>
Entrez un numero ou la longueur du numero<br>
<input id=nm value=142857><br>
<button onclick='fnkaprekar(nm.value)' style='width:122'>GO-NUMERO</button>
<button onclick='frnd()' style='width:122'>GO-LENGTH</button>
</form>
<script type="text/javascript">
var ares=[],ac=0,d=document,nm=d.getEleme ntById('nm')
nm.focus()
function fsdigits(n){
var k,s=0,nb=n.toString()
for(k=0,l=nb.length;k<l;k++)
s-= -nb.charAt(k)
return s
}//fsdigits(nb)
function frnd(){
var n,nb=(Math.ceil(Math.random()* 9)).toString()
for(k=1;k<nm.value;k++) nb+=n=Math.round(Math.random() *9)
if(!(nb%3))nb++
fnkaprekar(nm.value=nb.toStrin g())
}//frnd()
function fnkaprekar(n){
var kflag,n2=(n*n).toString(),len= n2.length,an=[]
d.write("Le nombre <b>n</b> proposé est : <b style=color:blue>"+n+"</b>")
d.write(" | CKS = "+fsdigits(n)+" | len = "+n.length)
d.write("<br>Son carré est : <b style=color:green>"+n2+"</b><br>")
kflag=fisnkaprekar(n)
if(!kflag) d.write(" (<span style=color:blue>"+n+"</span> n'est pas un nombre de Kaprekar)")
d.write("<hr>La suite de Kaprekar de <u>"+n+"</u> est comme suite :<br>")
var s=k="",n=ftri(n),pos=cptr=prev =deja=0
var aprev=[] // aprev=new Array()
while(k!=n){
for(var m=0;m<len;m++){
s+=n.charAt(len-m-1)
k=Math.abs(-(-n-(-s)))
}
if(prev==k){
ares[ac++]= "<br>"+ ++cptr +". S = "+s+" - (N = "+n+") = K = <b>"+k+"</b> | CKS = "+fsdigits(k)
break
}
for(q=0;q<aprev.length;q++) if(k==aprev[q]) {deja++;pos=q}
aprev[cptr]=k
for(x=k.toString().length;x<Ma th.floor(Math.log(n)/Math.log(10))+1;x++){
k=('0'+k).toString()
}
if(deja) break
ares[ac++]= "<br>"+ ++cptr+". S = "+s+" - (N = "+n+") = K = <b>"+k+"</b> | CKS = "+fsdigits(k)
prev=k; n=ftri(k.toString()); s=k=""
}
ares[ac++]="<hr><b><u>Sortie</u> : "+ ++cptr+".</b> S = "+s+" - (N = "+n+") = K = <b>"+k+"</b>"
if(deja){
ares[cptr-1]="<span style='background:yellow'>"+ar es[cptr-1]+" *</span>"
ares[pos]="<span style='background:yellow'>"+ar es[pos]+" *</span>"
ares[ac++]="<hr>Longueur du <b>cycle = "+eval(cptr-pos-1)+"</b> (cfr indices <span style='background:yellow'><b style='padding:0 5'>"+ -(-pos-1)+"</b></span> et <span style='background:yellow'><b style='padding:0 5'>"+cptr+"</b></span>)<br>"
}
for(k=0;k<ac;k++)d.write(ares[k])
}//fnkaprekar(n)
function ftri(p){
var a=[]
for(k=0,len=p.length;k<len;k++ ) { a[k]=p.charAt(k)}
a=a.sort()
for(k=0,n="";k<len;k++){n+=a[k]}
return n
}//ftri(p)
function fisnkaprekar(n){
var kflag=0,n2=(n*n).toString(),le n=n.length
for(var k=0;k<(pos=len-1);k++){
n1s=n2.substr(0,pos-k)
n2s=n2.substr(pos-k,len-1)
if((r=-(-n1s-n2s))==n){
kflag++
d.write(k+1+"è tour : <span style=color:green>"+n1s+" + "+n2s+"</span> = <b style=color:blue>"+r+" =NOMBRE DE KAPREKAR.</b>")
}
}
return kflag
}
</script>
=====
Bien merci et à votre impatiente et avide écoute.
-----