Série 2.Exercice 1 : nombres premiers La méthode la plus simple pour tester la primauté d’un nombre N est de tester sa divisibilité par 2 puis par tous les 5 entiers compris entre 3 et 37 [√N] = E(√N) [4,564] = E(4,564) 13 [0.0035] = E(0.0035) = 0 1 Nombres premiers / Algorithme lire N; Boolean EstPremier(N)= {Si N<2 alors retourne(faux) sinon Pour un entier N donné, si (N=2) alors retourne(vrai) sinon Si N <2, N n’est pas premier si (N modulo(2)=0) alors retourne(faux) sinon Si N=2; N est premier {i ← 3; Si N est divisible par un entier 2 D tel que 2 <D< = [√N] alors tant que (i <=N) faire N n’est pas premier, sinon il {si (N modulo(i)=0) alors retourne(faux) ; l’est i ← i+2;} Retourne (vrai);} } Rappels Java Rappels Java les tableaux Tableau = objet Taille fixe Taille variable quel choix? possibilité de stocker des types de base (int, char, boolean, long, short, …) ou des objets int[ ] tableau1 = new int[45]; (Éléments numéroté de 0 à 44) monObjet[] tab_objets = new monObjet[50]; Int[ ] tableauInit = {1, 40, 54, 13, 5}; boolean[] tabBooleans = {true, true, false, true}; Tableau anonyme : new char[ ] {‘c’, ‘q’, ‘e’, ‘v’}; Rappels Java Les tableaux en Java Possibilité de récupérer un tableau en tant que résultats Public static char[] getVoyels(); Possibilité de passer un tableau en argument Public static void main(String[] argv); Opérations sur les tableaux: affectation d'une valeur à une case int[] tableau1 = new int[5]; tab[3] = "salut"; Copie: int[] tab1=new int[10]; int[] tab2=tab1; Tab2[4]=3; // alors tab1[4] vaux maintenant 3. Longeur d’un tableau int longueur = tableau1.length; Rappels Java la classe Arrays Cette classe contient diverses méthodes pour manipuler des tableaux fill : affecte la même valeur à toutes les cases du tableau: public class Array_demo{ public static void main(String[] args){ int[] tableau = new int[20]; Arrays.fill(tableau, (int)(Math.random()*100)); //remplit toutes les cases avec le MÊME nombre for(int i = 0; i < tableau.length; i++){ System.out.println(tableau[i]); } … Rappels Java la classe Arrays equals : égalité profonde: Arrays.equals(tableau1, tableau2); equals() retourne vrai si : - les deux tableaux sont de la même taille - les deux tableaux contiennent le même type d'éléments - les paires d'éléments correspondent tableau1[i]=tableau2[i] sort : pour trier un tableau Arrays.sort(tableau); binarySearch : recherche d'un élément Arrays.binarySearch(tableau, 17); retourne l'index de l'élément recherché sinon une valeur négative sinon. Le tableau doit avoir été trié au préalable (avec Arrays.sort()) Rappels Java la classe Arrays import java.util.Random; import java.util.Arrays; public class RandomTab{ public static void main(String[] args){ int[] tableau = new int[20]; for(int i = 0; i < tableau.length; i++){ tableau[i] = (int)(Math.random()*100); } Arrays.sort(tableau); for(int i = 0; i < tableau.length; i++){ System.out.println(tableau[i]); } } } Rappels Java Autre utilitaire pour les tableaux System.arraycopy(Object from, int fromIndex, Object to, int toIndex, int count); : copier un tableau (ou une partie) public class CopieTableau { public static void main(String[] args) { char[] source = { 'a', 'r', 't', 'i', 'f', 'i', 'c', 'i', 'e', 'l', 'l', 'e' }; char[] cible = new char[4]; System.arraycopy(source, 6, cible, 0, 4); System.out.println(new String(cible)); } } → ciel Rappels Java Autre utilitaire pour tableaux System.sort(short[] a); trie le tableau passé en paramètre en utilisant un algorithme QuickSort adapté. System.binarySearch(long[] l, long v); recherche la valeur v dans le tableau l et renvoie son indice ou une valeur négative r, (-r+1) désigne la position ou v pourrait s’insérer pour que le tableau reste trié Rappels Java Autre utilitaire pour tableaux System.fill(char[] t, char c); donne la valeur c à tous les éléments de t System.equals(xxx[] t, Object other); Renvoie true si Other est un tableau du même type que t Other a le même taille que la taille de t Les éléments correspondants possèdent la même valeur. Rappels Java Les tableaux multidimensionnels Plusieurs applications double[][] matrice = new double[5][7]; Mais Java ne possède pas de tableaux multidimensionnels!! tableaux de tableaux Int[][] naissances={{1,2,1985}, {30,4,1976}, {29,12,1999},{20,8,1975},{27,2,1976}}; Donc naissance[1] vaux {30,4.1976} Possibilité de créer des tableaux irréguliers Exercices / Série 3 série n°3 Exercice 1 On va jouer pour deviner un nombre inférieur à 120 Nombre d'essaies : 6 ça y est, j'ai choisi un nombre au hasard. Taper le nombre que vous avez deviné: 45 trop grand :) il vous reste 5 essaie(s) Taper le nombre que vous avez deviné: 32 trop petit :) il vous reste 4 essaie(s) Taper le nombre que vous avez deviné: 39 trop grand :) il vous reste 3 essaie(s) Taper le nombre que vous avez deviné: 1 série n°3 Exercice 1 … … … 15 trop petit :) il vous reste 1 essaie(s) Taper le nombre que vous avez deviné: 18 trop petit :) il vous reste 0 essaie(s). Désolé, vous n‘avez pas réussi à trouver le nombre mystérieux Voulez – vous rejouer (O/N) ? 1 série n°3 Exercice 2 > Géstion d’agenda. Tapez A pour ajouter un rendes-vous ou V pour afficher des rendez-vous. Votre choix ?: A Quelle date, jj/mm ?: 14/03 RDV ?: Anniversaire Michelle. Ok > Tapez ‘a’ pour ajouter un rendes-vous, ‘v’ pour afficher des rendez-vous ou ‘q’ pour quitter. Votre choix ?: 1 série n°3 Exercice 2 v Quelle date, jj/mm ?: 14/03 RDV(s) : - Anniversaire Michelle. > Tapez ‘a’ pour ajouter un rendes-vous, ‘v’ pour afficher des rendez-vous ou ‘q’ pour quitter. Votre choix ?: q