|
@@ -0,0 +1,66 @@
|
|
|
+// Wait event to calc prime number
|
|
|
+ipcRenderer.once('calc-prime-number', (event, number) => {
|
|
|
+ const result = primalite(number);
|
|
|
+ ipcRenderer.send('prime-number-result', result);
|
|
|
+});
|
|
|
+
|
|
|
+function primalite (nombre) {
|
|
|
+ // Calcul de la racine carré du nombre a tester
|
|
|
+ const sqrt = Math.ceil(Math.sqrt(nombre));
|
|
|
+ // Recupération des nombres premiers inferieur à la racine
|
|
|
+ const primeNumber = eratosthene(sqrt);
|
|
|
+ // Test si le nombre est divisible par les nombres premiers
|
|
|
+ for(const prime of primeNumber) {
|
|
|
+ if (nombre % prime === 0) {
|
|
|
+ // Le nombre est divisible et donc pas premier
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Si on arrive ici le nombre n'est pas divisible et donc premier
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+function eratosthene (nombre) {
|
|
|
+ const retour = [];
|
|
|
+ const valeur = [];
|
|
|
+ const marqueur = [];
|
|
|
+ let compteur = 0;
|
|
|
+ let mem = 0
|
|
|
+ // Initilisation des tableaux
|
|
|
+ for(let i = 2; i <= nombre; i++) {
|
|
|
+ valeur[i - 2] = i;
|
|
|
+ marqueur[i - 2] = 0;
|
|
|
+ }
|
|
|
+ // Parcours et elimination des nombres
|
|
|
+ for (let i = 0; i <= nombre - 2; i++) {
|
|
|
+ // Regarde si le nombre n'est pas déjà marqué
|
|
|
+ if (marqueur[i] === 0) {
|
|
|
+ // On marque tous les nombres multiple de ce nombre
|
|
|
+ for(j = i + 1; j <= nombre - 2; j++) {
|
|
|
+ if (valeur[j] % valeur[i] == 0) {
|
|
|
+ marqueur[j] = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Augmentation compteur
|
|
|
+ compteur++;
|
|
|
+ }
|
|
|
+ // Creation du resultat
|
|
|
+ for(let i = 0; i < compteur; i++) {
|
|
|
+ // Recuperation des nombres non marqué
|
|
|
+ for(j = mem; j < nombre - 2; j++) {
|
|
|
+ if (marqueur[j] === 0) {
|
|
|
+ // Ajout du nombre
|
|
|
+ retour[i] = valeur[j];
|
|
|
+ // Pour ne pas le reprendre
|
|
|
+ marqueur[j] = 2;
|
|
|
+ mem = j;
|
|
|
+ // Pour s'arreter
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Retour
|
|
|
+ return retour;
|
|
|
+}
|