ChronoMath, une chronologie des MATHÉMATIQUES
à l'usage des professeurs de mathématiques, des étudiants et des élèves des lycées & collèges

Nombres de Carmichael dans un intervalle donné          Programme JavaScript

On recherche ici les nombres de Carmichael dans un intervalle [n1,n2] donné de N. On reprend le même programme décrit à la page Nombres de Carmichael en le glissant dans une boucle dont les bornes n1 et n2 sont choisies par l'utilisateur.

Programme Nombres de Carmichael en JavaScript

  Le programme est efficace mais attention cependant au temps de calcul pour des grands intervalles et/ou de grandes valeurs de n au-delà de 10000). Une alerte aura lieu tous les 1000 essais pour éviter de planter votre ordinateur ! Google Chrome et Mozilla présentent l'avantage de mieux s'inquiéter qu'Internet Explorer en cas de non réponse d'un script...




<SCRIPT LANGUAGE=JavaScript>
var n,t
function carmi2()
{
t=0;ok=0;n1="";n2=""
n1=prompt("Intervalle [a,b], donnez a :",n1)
n1=eval(n1);if(n1%2==0){n1++}
n2=prompt("Intervalle [a,b], donnez b :",n2)
n2=eval(n2)
if(!confirm("Intervalle ["+n1+" , "+n2+"]."+"\n"+"Je continue ?"))return
dep=0;
//---------- compteur
for (n=n1;n<=n2;n=n+2)  
// ------début boucle n varie de n1 à n2 de n1 à n2
{
t=prem(n);flag=1
if (t==1){continue}   
// -----n est premier, on boucle sur n
for (a=2;a<n;a++)
{
if (pgcd(n,a)==1)
{
r1=a%n;rn=r1
for (i=2;i<=n;i++) {rn=(rn*r1)%n}
if (rn%n!=r1) {flag=0;break}     
// ------on n'a pas a^n congru à a, on sort et on boucle sur n
}
}
if(flag==1)
{
ok=1; 
 //-----pour se souvenir qu'on a trouvé au moins un nb de carmichael
if(!confirm(n+" est un nombre de Carmichael. Je continue ?")) return
dep=n;
}
if(n-dep>1000){dep=n;if(!confirm("Toujours rien ! Je continue ?"))return}
// ------  fin boucle n1 à n2
if(ok==0){alert("Aucun nombre de Carmichael dans cet intervalle")} else {alert("Fin de recherche.")}
}

// --------------------------------------------------------------------------------------

function pgcd()
{
aa=a
bb=n
while (bb > 0)
{
r = aa % bb
aa = bb
bb = r
}
return aa
}
// --------------------------------------------------------------------------------------
function prem(n)
{
d=0;k=1;t=1
if(n==3||n==5||n==7){return 1}
if(n%3==0) {t=0}
while (d*d<=n && t==1)
{
d1=6*k-1;d2=6*k+1    
// ----- un nb premier est de la forme 6k±1
if(n%d1==0 || n%d2==0) {t=0}
k++
d=d2
}
return t
}
</SCRIPT>
Nombres pseudo-premiers :  Nombres premiers jumeaux :


© Serge Mehl - www.chronomath.com