begin process at 2012 05 27 22:07:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CHINESE REMAINDER THEOREM

CHINESE REMAINDER THEOREM


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Niveau :Débutant Date de création :24/02/2005 Vu :3 395

Auteur : malik7934

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

"Theorème des restes Chinois"... pour les amoureux de l'algorithmic Algebra!
... code purement ludique...

Source

  • <?php
  • /*
  • CHINESE REMAINDER THEOREM
  • théorème des restes chinois
  • Résolution de l'équation
  • a = x mod m
  • b = x mod n
  • Condition initiale: gcd(m,n) = 1
  • */
  • function crt($a,$m,$b,$n){
  • $res = ($a*$n*eea($n,$m)+$b*$m*eea($m,$n))%($m*$n);
  • if ($res<0){
  • while ($res<0)
  • $res += $m*$n;
  • }
  • return $res;
  • }
  • // extended Euclid Algorithm pour le calcul de l'inverse
  • function eea($a,$b){
  • $x = array($a,1,0);
  • $y = array($b,0,1);
  • while ($y[0] > 0){
  • $rq = ed($x[0],$y[0]);
  • $temp = $x;
  • $x = $y;
  • $y[0] = $temp[0] - $rq[1]*$y[0];
  • $y[1] = $temp[1] - $rq[1]*$y[1];
  • $y[2] = $temp[2] - $rq[1]*$y[2];
  • }
  • return $x[1];
  • }
  • // division euclidienne
  • function ed($x,$y){
  • $rq[0] = $x % $y;
  • $rq[1] = ($x-$rq[0])/$y;
  • return $rq;
  • }
  • /*
  • 3 = x mod 5
  • 4 = x mod 7
  • => x = 18
  • */
  • echo $res = crt(3,5,4,7); // $res = 18
  • ?>
<?php

/*
    CHINESE REMAINDER THEOREM
   théorème des restes chinois

  Résolution de l'équation
	a = x mod m
	b = x mod n

  Condition initiale: gcd(m,n) = 1

*/

function crt($a,$m,$b,$n){

	$res = ($a*$n*eea($n,$m)+$b*$m*eea($m,$n))%($m*$n);

	if ($res<0){
		while ($res<0)
			$res += $m*$n;
	}

	return $res;
}

// extended Euclid Algorithm pour le calcul de l'inverse

function eea($a,$b){

	$x = array($a,1,0);
	$y = array($b,0,1);

	while ($y[0] > 0){
		$rq = ed($x[0],$y[0]);
		$temp = $x;
		$x = $y;
		$y[0] = $temp[0] - $rq[1]*$y[0];
		$y[1] = $temp[1] - $rq[1]*$y[1];
		$y[2] = $temp[2] - $rq[1]*$y[2];
	}
	

	return $x[1];
}

// division euclidienne

function ed($x,$y){
	$rq[0] = $x % $y;
	$rq[1] = ($x-$rq[0])/$y;

	return $rq;
}

/*
	3 = x mod 5
	4 = x mod 7
 
        => x = 18
*/

echo $res = crt(3,5,4,7); // $res = 18
?>



 Sources du même auteur

Source avec Zip Source avec une capture EXÉCUTER UN SCRIPT AU-DELÀ DU TIMEOUT DE PHP
Source avec une capture SAUVEGARDE AUTOMATISÉE DE VOS BASES DE DONNÉES
SAVOIR QUI CONNAÎT QUI DANS UN FORUM/CHAT/...
Source avec une capture CACHER UNE SIGNATURE DANS UNE IMAGE
NOUVEAUX MESSAGES SUR YAHOO MAIL

 Sources de la même categorie

EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
CLEF POUR EAN 13 ET 14 par RaftY
FONCTION DE CALCUL DU NOMBRE DE DUEL UNIQUE POUR UN NOMBRE N... par mtrix000
Source avec Zip Source avec une capture TRIANGLE DE PASCAL ET SON ÉQUATION par vendeeHdLR89
Source avec Zip CONVERTISSEUR LAMBERT2 ÉTENDU EN COORDONNÉE GÉOGRAPHIQUE (LO... par varfendell

Commentaires et avis

Commentaire de LocalStone le 24/02/2005 22:15:16

Hé hé hé hé ... 8/10.

Commentaire de dominion le 25/02/2005 10:46:30

Ca ne serais pas un code pour RSA ca ???

Commentaire de malik7934 le 25/02/2005 11:37:53

Non, pas spécialement. Un code pour RSA ce serait plutôt un générateur de nombre premier.

Ceci dit, le CRT est effectivement utile dans certaines attaques contre RSA ;o)

Commentaire de dominion le 25/02/2005 11:48:39

Je me disait aussi ;-)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales