Exercices corrigés sur les boucles en Python, Java et langage C
En programmation, une boucle est une séquence d'instructions qui est répétée jusqu'à ce qu'une certaine condition soit atteinte.
- Une opération est effectuée, telle que l'obtention et la modification d'un élément de données, puis une condition est vérifiée, par exemple si un compteur a atteint un nombre prescrit.
- Compteur non atteint: Si le compteur n'a pas atteint le nombre souhaité, l'instruction suivante de la séquence retourne à la première instruction de la séquence et la répète.
- Compteur atteint: Si la condition est atteinte, l'instruction suivante “passe” à l'instruction séquentielle suivante ou aux branches à l'extérieur de la boucle.
Dans les exercices suivants, nous traiterons de nombreux problèmes pour vous familiariser avec les boucles.
Il s'agit des exercices de programmation les plus recommandés pour les débutants.
Exercice 1
Écrivez un programme pour afficher tous les nombres naturels de 1 à n en utilisant la boucle for et while.
- Saisir n : 5
Données de sortie
- 1 2 3 4 5
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, n; // Fournir les données d'entrée System.out.print("Saisir un nombre n : "); n = clavier.nextInt(); System.out.println("les nombres naturels de 1 à " + n); for (i = 1; i <= n; i++) { System.out.print(i + "\t"); } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, n; /* Saisir les données d'entrée */ printf("Saisir un nombre n : "); scanf("%d", &n); printf("les nombres naturels de 1 à %d : \n", n); for(i=1; i<=n; i++) { printf("%d\n", i); } return 0; }
# Fournir les données d'entrée n = int(input("Saisir un nombre : ")) print("les nombres naturels de 1 à ", n) for i in range(1, n+1): print(i, end=' ')
Exercice 2
Écrivez un programme pour afficher tous les nombres naturels en sens inverse de n à 1 en utilisant la boucle for et while.
- Saisir n : 5
Données de sortie
- 5 4 3 2 1
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, n; // Fournir les données d'entrée System.out.print("Saisir un nombre n : "); n = clavier.nextInt(); System.out.println("les nombres naturels de " + n + " à 1"); for (i = n; i >= 1; i--) { System.out.print(i + "\t"); } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, n; /* Saisir les données d'entrée */ printf("Saisir n : "); scanf("%d", &n); for(i=n; i>=1; i--) { printf("%d\n", i); } return 0; }
# Fournir les données d'entrée n = int(input("Saisir un nombre : ")) print("les nombres naturels de {0} à 1".format(n)) for i in range(n, 0, -1): print(i, end=' ')
Exercice 3
Écrivez un programme pour afficher tous les nombres pairs de 1 à n en utilisant la boucle for et while.
- Saisir un nombre n : 11
Données de sortie
- les nombres pairs de 1 à 11 sont : 2 4 6 8 10
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, n; // Fournir les données d'entrée System.out.print("Saisir un nombre n : "); n = clavier.nextInt(); System.out.println("les nombres pairs de 1 à " + n + " sont : "); for (i = 1; i <= n; i++) { // Vérifier si i est pair ! if (i % 2 == 0) { System.out.print(i + "\t"); } } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, n; /* Saisir les données d'entrée */ printf("Saisir n : "); scanf("%d", &n); printf("les nombres pairs de 1 à %d sont : \n", n); for(i=1; i<=n; i++) { /* Vérifier si i est pair ! */ if(i%2 == 0) { printf("%d\n", i); } } return 0; }
# Fournir les données d'entrée n = int(input("Saisir un nombre : ")) print("les nombres pairs de 1 à {0} ".format(n)) for i in range(1, n+1): if (i % 2 == 0): print(i, end=" ")
Exercice 4
Écrivez un programme pour afficher tous les nombres impairs de 1 à n en utilisant la boucle for et while.
- Saisir un nombre n : 11
Données de sortie
- les nombres impairs de 1 à 11 sont : 1 3 5 7 9 11
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, n; // Fournir les données d'entrée System.out.print("Saisir un nombre n : "); n = clavier.nextInt(); System.out.println("les nombres impairs de 1 à " + n + " sont : "); for (i = 1; i <= n; i++) { // Vérifier si i n'est pas pair ! if (i % 2 != 0) { System.out.print(i + "\t"); } } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, n; /* Saisir les données d'entrée */ printf("Saisir n: "); scanf("%d", &n); printf("les nombres impair de 1 à %d sont : \n", n); for(i=1; i<=n; i++) { /* S 'i' est impair */ if( i%2 != 0) { printf("%d\n", i); } } return 0; }
# Fournir les données d'entrée n = int(input("Saisir un nombre : ")) print("les nombres impairs de 1 à {0} ".format(n)) for i in range(1, n+1): if (i % 2 != 0): print(i, end=" ")
Exercice 5
Écrivez un programme pour trouver la somme de tous les nombres naturels entre 1 et n en utilisant la boucle for et while
- Saisir un nombre n : 30
Données de sortie
- la somme de 30 nombres = 465
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, n, somme = 0; // Fournir les données d'entrée System.out.print("Saisir un nombre n : "); n = clavier.nextInt(); // calculer la somme for (i = 1; i <= n; i++) { somme += i; } System.out.println("la somme de " + n + " nombres = " + somme); // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, n, somme=0; /* saisir les données d'entrée */ printf("Saisir n : "); scanf("%d", &n); /* calculer la somme */ for(i=1; i<=n; i++) { somme += i; } printf("la somme de %d nombres = %d", n, somme); return 0; }
# Fournir les données d'entrée n = int(input("Saisir un nombre : ")) print("les nombres impairs de 1 à {0} ".format(n)) somme = 0 for i in range(1, n+1): somme += i print("la somme de {0} nombres = {1}".format(n, somme))
Exercice 6
Écrivez un programme pour saisir le nombre d'utilisateurs et trouvez la somme de tous les nombres pairs entre 1 et n en utilisant la boucle "for" et "while"
- Saisir un nombre : 13
Données de sortie
- la somme des nombres pairs de 1 à 13 = 42
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, n, somme = 0; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); n = clavier.nextInt(); // calculer la somme for (i = 2; i <= n; i += 2) { somme += i; } System.out.println("la somme des nombres pairs de 1 à " + n + " = " + somme); // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, n, somme=0; /* saisir les données d'entrée */ printf("Saisir n : "); scanf("%d", &n); for(i=2; i<=n; i+=2) { somme += i; } printf("la somme des nombres pairs de 1 à %d = %d", n, somme); return 0; }
# Fournir les données d'entrée n = int(input("Saisir un nombre : ")) print("les nombres impairs de 1 à {0} ".format(n)) somme = 0 for i in range(2, n+1, 2): somme += i print("la somme des nombres pairs de 1 à {0} nombres = {1}".format(n, somme))
Exercice 7
Écrire un programme pour saisir un nombre à partir de l'utilisateur et afficher la table de multiplication du nombre donné en utilisant "for" la boucle et "while"
- Saisir un nombre : 9
Données de sortie
- 9 * 1 = 9
- 9 * 2 = 18
- 9 * 3 = 27
- 9 * 4 = 36
- 9 * 5 = 45
- 9 * 6 = 54
- 9 * 7 = 63
- 9 * 8 = 72
- 9 * 9 = 81
- 9 * 10 = 90
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, n; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); n = clavier.nextInt(); for (i = 1; i <= 10; i++) { System.out.println(n + " * " + i + " = " + (n * i)); } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, num; /* Saisir les données d'entrée */ printf("Saisir n : "); scanf("%d", &num); for(i=1; i<=10; i++) { printf("%d * %d = %d\n", num, i, (num*i)); } return 0; }
# Fournir les données d'entrée n = int(input("Saisir un nombre : ")) for i in range(1, 11): print("{0} * {1} = {2}".format(n, i, i*n))
Exercice 8
Écrivez un programme pour entrer un nombre de l'utilisateur et comptez le nombre de chiffres dans l'entier donné en utilisant une boucle.
- Saisir un nombre : 2020
Données de sortie
- Nombre de chiffres : 4
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int num, compteur = 0; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); // Tant que num >0 */ while (num != 0) { // incrémenter le compteur */ compteur++; // Supprimer le dernier chiffre de 'num' */ num /= 10; } System.out.println("Nombre de chiffres : " + compteur); // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int num, compteur = 0; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &num); /* Tant que num >0 */ while(num != 0) { /* incrémenter le compteur */ compteur++; /* Supprimer le dernier chiffre de 'num' */ num /= 10; } printf("Nombre de chiffres : %d", compteur); return 0; }
# Fournir les données d'entrée num = int(input("Saisir un nombre : ")) compteur = 0 while (num != 0): # incrémenter le compteur compteur += 1 # Supprimer le dernier chiffre de 'num' num //= 10 print("Nombre de chiffres : ", compteur)
Exercice 9
Écrivez un programme pour saisir un nombre de l'utilisateur et recherchez le premier et le dernier chiffre d'un nombre en utilisant une boucle.
- Saisir un nombre : 1987
Données de sortie
- Premier chiffre = 1
- Dernier chiffre = 7
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int n, premier, dernier; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); n = clavier.nextInt(); dernier = n % 10; premier = n; /* Supprimer le dernier chiffre du numéro jusqu'à ce qu'il ne reste qu'un chiffre */ while (premier >= 10) { premier = premier / 10; } System.out.println("Premier chiffre = " + premier); System.out.println("Dernier chiffre = " + dernier); // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int n, premier, dernier; /* Saisir les données d'entrée */ printf("Saisir n : "); scanf("%d", &n); dernier = n % 10; premier = n; /* Supprimer le dernier chiffre du numéro jusqu'à ce qu'il ne reste qu'un chiffre */ while(premier >= 10) { premier = premier / 10; } printf("Premier chiffre = %d", premier); printf("Dernier chiffre = %d", dernier); return 0; }
# Fournir les données d'entrée n = int(input("Saisir un nombre : ")) # print("les nombres impairs de 1 à {0} ".format(n)) dernier = n % 10 premier = n # Supprimer le dernier chiffre du numéro jusqu'à ce qu'il ne reste qu'un chiffre */ while(premier >= 10): premier = premier // 10 print("Premier chiffre = ", premier) print("Dernier chiffre = ", dernier)
Exercice 10
Écrivez un programme pour saisir un numéro de l'utilisateur et échangez le premier et le dernier chiffre du numéro donné.
- Saisir un nombre : 1987
Données de sortie
- Après l'echange : 7981
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int num, echanger; int dernier, premier, chiffres; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); // Dernier chiffre */ dernier = num % 10; // Trouver le nombre total de chiffres - 1 */ chiffres = (int) Math.log10(num); // Premier chiffre */ premier = (int) (num / Math.pow(10, chiffres)); echanger = dernier; echanger *= (int) Math.pow(10, chiffres); echanger += num % ((int) Math.pow(10, chiffres)); echanger -= dernier; echanger += premier; System.out.println("Nombre original : " + num); System.out.println("Après l'echange : " + echanger); // fermer les ressources clavier.close(); } }
#include <stdio.h> #include <math.h> int main() { int num, echanger; int dernier, premier, chiffres; /* Input number from user */ printf("Saisir n : "); scanf("%d", &num); /* Dernier chiffre */ dernier = num % 10; /* Trouver le nombre total de chiffres - 1 */ chiffres = (int)log10(num); /* Premier chiffre */ premier = (int)(num / pow(10, chiffres)); echanger = dernier; echanger *= (int) pow(10, chiffres); echanger += num % ((int) pow(10, chiffres)); echanger -= dernier; echanger += premier; printf("Nombre original : %d", num); printf("Après l'echange : %d", echanger); return 0; }
import math # Fournir les données d'entrée num = int(input("Saisir un nombre : ")) # print("les nombres impairs de 1 à {0} ".format(n)) dernier = num % 10 # Trouver le nombre total de chiffres - 1 */ chiffres = int(math.log10(num)) # Premier chiffre */ premier = int(num / pow(10, chiffres)) echanger = dernier echanger *= int(pow(10, chiffres)) echanger += num % (int(pow(10, chiffres))) echanger -= dernier echanger += premier print("Nombre original : ", num) print("Après l'echange : ", echanger)
Exercice 11
Écrivez un programme pour saisir un nombre et calculer la somme de ses chiffres en utilisant la boucle for.
- Saisir un nombre : 1987
Données de sortie
- Somme de chiffres = 25
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int num, somme = 0; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); // Répétez jusqu'à ce que num devienne 0 */ while (num != 0) { // Trouver le dernier chiffre de num et l'ajouter à somme */ somme += num % 10; // Supprimer le dernier chiffre */ num = num / 10; } System.out.println("Somme de chiffres = " + somme); // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int num, somme=0; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &num); /* Répétez jusqu'à ce que num devienne 0 */ while(num!=0) { /* Trouver le dernier chiffre de num et l'ajouter à somme */ somme += num % 10; /* Supprimer le dernier chiffre */ num = num / 10; } printf("Somme de chiffres = %d", somme); return 0; }
import math # Fournir les données d'entrée num = int(input("Saisir un nombre : ")) somme = 0 # Répétez jusqu'à ce que num devienne 0 while (num != 0): # Trouver le dernier chiffre de num et l'ajouter à somme somme += num % 10 # Supprimer le dernier chiffre num = num // 10 print("Somme de chiffres = ", somme)
Exercice 12
Écrivez un programme pour saisir le numéro de l'utilisateur et vérifiez que le numéro est palindrome ou non, en utilisant une boucle.
- Saisir un nombre : 1221
Données de sortie
- 1221 est palindrome.
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int n, num, inverse = 0; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); n = clavier.nextInt(); // copier la valeur d'origine */ num = n; // Trouver l'inverse de n et stocker dans inverse */ while (n != 0) { inverse = (inverse * 10) + (n % 10); n /= 10; } // Vérifiez si l'inverse est égal à «num» ou non */ if (inverse == num) { System.out.println(num + " est palindrome."); } else { System.out.println(num + " n'est pas palindrome."); } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int n, num, inverse = 0; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &n); /* copier la valeur d'origine */ num = n; /* Trouver l'inverse de n et stocker dans inverse */ while(n != 0) { inverse = (inverse * 10) + (n % 10); n /= 10; } /* Vérifiez si l'inverse est égal à «num» ou non */ if(inverse == num) { printf("%d est palindrome.", num); } else { printf("%d n'est pas palindrome.", num); } return 0; }
import math # Fournir les données d'entrée n = int(input("Saisir un nombre : ")) # copier la valeur d'origine */ num = n inverse = 0 # Trouver l'inverse de n et stocker dans inverse */ while(n != 0): inverse = (inverse * 10) + (n % 10) n //= 10 # Vérifiez si l'inverse est égal à «num» ou non */ if(inverse == num): print(num, " est palindrome.") else: print(num, " n'est pas palindrome.")
Exercice 13
Écrivez un programme pour compter la fréquence des chiffres du nombre donné.
- Saisir un nombre : 1122344
Données de sortie
- Fréquence de 0 = 0
- Fréquence de 1 = 2
- Fréquence de 2 = 2
- Fréquence de 3 = 1
- Fréquence de 4 = 2
- Fréquence de 5 = 0
- Fréquence de 6 = 0
- Fréquence de 7 = 0
- Fréquence de 8 = 0
- Fréquence de 9 = 0
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int num, n; int i, dernierchiffre; // tableau pour stocker la fréquence de chaque chiffre (Taille 10) */ int freq[] = new int[10]; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); n = clavier.nextInt(); // copier la valeur d'origine */ num = n; // Tant que n est différent de 0 */ while (n != 0) { // dernier chiffre */ dernierchiffre = n % 10; // Supprimer le dernier chiffre */ n /= 10; // Incrémenter la fréquence du dernier chiffre */ freq[dernierchiffre]++; } // Afficher le tableau des fréqeunce */ for (i = 0; i < 10; i++) { System.out.println("Fréquence de " + i + " = " + freq[i]); } // fermer les ressources clavier.close(); } }
#include <stdio.h> #define BASE 10 /* constante */ int main() { int num, n; int i, dernierchiffre; /* tableau pour stocker la fréquence de chaque chiffre (Taille 10)*/ int freq[BASE]; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &num); /* Intialiser le tableau des fréquences par 0 */ for(i=0; i< BASE; i++) { freq[i] = 0; } /* prendre une copie de n */ n = num; /* Tant que n est différent de 0 */ while(n != 0) { /* dernier chiffre */ dernierchiffre = n % 10; /* Supprimer le dernier chiffre */ n /= 10; /* Incrémenter la fréquence du dernier chiffre */ freq[dernierchiffre]++; } /* Afficher le tableau des fréqeunce */ for(i=0; i<BASE; i++) { printf("Fréquence de %d = %d\n", i, freq[i]); } return 0; }
import math # Fournir les données d'entrée n = int(input("Saisir un nombre : ")) freq = [0]*10 # copier la valeur d'origine */ num = n # Tant que n est différent de 0 */ while (n != 0): # dernier chiffre */ dernierchiffre = n % 10 # Supprimer le dernier chiffre */ n //= 10 # Incrémenter la fréquence du dernier chiffre */ freq[dernierchiffre] += 1 # Afficher le tableau des fréqeunce */ for i in range(10): print("Fréquence de {0} = {1}".format(i, freq[i]))
Exercice 14
Écrivez un programme pour saisir un nombre de l'utilisateur et affichez-le en mots en utilisant la boucle for.
- Saisir un nombre : 123001
Données de sortie
- Un Deux Trois Zéro Zéro Un
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int n, num = 0, chiffres; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); n = clavier.nextInt(); // Calculer le nombre de chiffres */ chiffres = (int) Math.log10(n); // Stocker l'inverse de n dans num */ while (n != 0) { num = (num * 10) + (n % 10); n /= 10; } // Trouver le nombre des zéros à la fin */ chiffres = chiffres - ((int) Math.log10(num)); /* Extraire le dernier chiffre du nombre et imprimer le nombre correspondant en mots jusqu'à ce que le nombre devienne 0 */ while (num != 0) { switch (num % 10) { case 0: System.out.print("Zéro "); break; case 1: System.out.print("Un "); break; case 2: System.out.print("Deux "); break; case 3: System.out.print("Trois "); break; case 4: System.out.print("Quatre "); break; case 5: System.out.print("Cinq "); break; case 6: System.out.print("Six "); break; case 7: System.out.print("Sept "); break; case 8: System.out.print("huit "); break; case 9: System.out.print("Neuf "); break; } num /= 10; } // afficher les zeros réstantes */ while (chiffres > 0 ? true : false) { System.out.print("Zero "); chiffres--; } // fermer les ressources clavier.close(); } }
#include <stdio.h> #include <math.h> int main() { int n, num = 0, chiffres; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &n); /* Calculer le nombre de chiffres */ chiffres = (int) log10(n); /* Stocker l'inverse de n dans num */ while(n != 0) { num = (num * 10) + (n % 10); n /= 10; } /* Trouver le nombre des zéros à la fin */ chiffres = chiffres - ((int) log10(num)); /* * Extraire le dernier chiffre du nombre et imprimer le nombre correspondant en mots * jusqu'à ce que le nombre devienne 0 */ while(num != 0) { switch(num % 10) { case 0: printf("Zéro "); break; case 1: printf("Un "); break; case 2: printf("Deux "); break; case 3: printf("Trois "); break; case 4: printf("Quatre "); break; case 5: printf("Cinq "); break; case 6: printf("Six "); break; case 7: printf("Sept "); break; case 8: printf("huit "); break; case 9: printf("Neuf "); break; } num /= 10; } /* afficher les zeros réstantes */ while(chiffres) { printf("Zero "); chiffres--; } return 0; }
import math # Fournir les données d'entrée n = int(input("Saisir un nombre : ")) # Calculer le nombre de chiffres */ chiffres = int(math.log10(n)) num = 0 # Stocker l'inverse de n dans num */ while (n != 0): num = (num * 10) + (n % 10) n //= 10 # Trouver le nombre des zéros à la fin */ chiffres = chiffres - int(math.log10(num)) # # Extraire le dernier chiffre du nombre et imprimer le nombre correspondant en # mots jusqu'à ce que le nombre devienne 0 while (num != 0): v = num % 10 if v == 0: print("Zéro") elif v == 1: print("Un") elif v == 2: print("Deux") elif v == 3: print("Trois") elif v == 4: print("Quatre") elif v == 5: print("Cinq") elif v == 6: print("Six") elif v == 7: print("Sept") elif v == 8: print("Huit") elif v == 9: print("Neuf") num //= 10 # afficher les zeros réstantes */ while (chiffres > 0): print("Zero ") chiffres -= 1
Exercice 15
Écrivez un programme pour entrer un nombre de l'utilisateur et trouvez tous les facteurs du nombre donné en utilisant la boucle for.
Le facteur de tout nombre est un nombre entier qui divise exactement le nombre en un nombre entier sans laisser de reste. Par exemple, 2 est un facteur de 6 car 2 divise 6 exactement sans laisser de reste.
- Saisir un nombre : 20
Données de sortie
- Les facteurs de 20 sont : 1 2 4 5 10 20
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, num; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); System.out.println("Les facteurs de " + num + " sont : "); // Itérer de 1 à num */ for (i = 1; i <= num; i++) { /* Si num est exactement divisible par i alors i est un facteur de num */ if (num % i == 0) { System.out.print(i + " "); } } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, num; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &num); printf("Les facteurs de %d sont : \n", num); /* Itérer de 1 à num */ for(i=1; i<=num; i++) { /* * Si num est exactement divisible par i alors i est un facteur de num */ if(num % i == 0) { printf("%d, ",i); } } return 0; }
import math # Fournir les données d'entrée num = int(input("Saisir un nombre : ")) print("Les facteurs de {0} sont : ".format(num)) for i in range(1, num+1): # Si num est exactement divisible par i alors i est un facteur de num if (num % i == 0): print(i, end=" ")
Exercice 16
Écrivez un programme pour saisir un nombre et calculer sa factorielle à l'aide de la boucle for.
La factorielle d'un nombre "n" est le produit de tous les entiers positifs inférieurs ou égaux à n. Il est noté n!.
Par exemple, factorielle de 5!= 1*2*3*4*5= 120
- Saisir un nombre : 5
Données de sortie
- Factorielle de 5= 120
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, num, fact = 1; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); // Exécutez la boucle de 1 à num */ for (i = 1; i <= num; i++) { fact = fact * i; } System.out.println("Factorielle de " + num + "= " + fact); // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, num; unsigned int fact=1; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &num); /* Exécutez la boucle de 1 à num */ for(i=1; i<=num; i++) { fact = fact * i; } printf("Factorielle de %d = %d", num, fact); return 0; }
# Fournir les données d'entrée num = int(input("Saisir un nombre : ")) fact = 1 for i in range(2, num+1): fact = fact*i print("Factorielle de {0}= {1}".format(num, fact))
Exercice 17
Écrivez un programme, entrez deux nombres de l'utilisateur et trouvez le plus grand diviseur commun en utilisant la boucle for.
- Saisir nombre 1 : 35
- Saisir nombre 2 : 60
Données de sortie
- PGCD de 35 et 60 = 5
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, num1, num2, min, pgcd = 1; // Fournir les données d'entrée System.out.print("Saisir nombre 1 : "); num1 = clavier.nextInt(); System.out.print("Saisir nombre 2 : "); num2 = clavier.nextInt(); // trouver le minimum */ min = (num1 < num2) ? num1 : num2; for (i = 1; i <= min; i++) { // Si i est le facteur des deux nombres */ if (num1 % i == 0 && num2 % i == 0) { pgcd = i; } } System.out.println("PGCD de " + num1 + " et " + num2 + " = " + pgcd); // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, num1, num2, min, pgcd=1; /* Saisir les données d'entrée */ printf("Saisir deux nombres : "); scanf("%d%d", &num1, &num2); /* trouver le minimum */ min = (num1<num2) ? num1 : num2; for(i=1; i<=min; i++) { /* Si i est le facteur des deux nombres */ if(num1%i==0 && num2%i==0) { pgcd = i; } } printf("PGCD de %d et %d = %d\n", num1, num2, pgcd); return 0; }
# Fournir les données d'entrée num1 = int(input("Saisir nombre 1 : ")) num2 = int(input("Saisir nombre 2 : ")) min = num1 if (num1 < num2) else num2 for i in range(1, min+1): if (num1 % i == 0 and num2 % i == 0): pgcd = i print("PGCD de {0} et {1} = {2}".format(num1, num2, pgcd))
Exercice 18
Écrivez un programme pour saisir un nombre et vérifiez si le nombre est un nombre premier ou non en utilisant la boucle for.
- Saisir un nombre : 13
Données de sortie
- 13 est premier
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, num, estPremier; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); /* Si estPremier = 1, alors le nombre est premier Initialement, nous avons supposé que le nombre était premier. */ estPremier = 1; for (i = 2; i <= num / 2; i++) { // si num est divisible par i, alors le nombre n'est pas premier */ if (num % i == 0) { estPremier = 0; // Quitter la boucle */ break; } } /* Si estPremier contient 1 alors il est premier */ if (estPremier == 1) { System.out.print(num + " est premier"); } else { System.out.print(num + " n'est pas premier"); } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, num, estPremier; /* * Si estPremier = 1, alors le nombre est premier * Initialement, nous avons supposé que le nombre était premier. */ estPremier = 1; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &num); for(i=2; i<=num/2; i++) { /* si num est divisible par i, alors le nombre n'est pas premier */ if(num%i==0) { estPremier = 0; /* Quitter la boucle */ break; } } /* * Si estPremier contient 1 alors il est premier */ if(estPremier == 1) { printf("%d est premier", num); } else { printf("%d n'est pas premier", num); } return 0; }
import math # Fournir les données d'entrée num = int(input("Saisir un nombre : ")) # Si estPremier = True, alors le nombre est premier Initialement, nous avons # supposé que le nombre était premier. estPremier = True for i in range(2, num // 2 + 1): # si num est divisible par i, alors le nombre n'est pas premier */ if (num % i == 0): estPremier = False # Quitter la boucle */ break # Si estPremier contient True alors il est premier if (estPremier == 1): print(num, " est premier") else: print(num, " n'est pas premier")
Exercice 19
Écrivez un programme pour saisir un nombre de l'utilisateur et trouvez les facteurs premiers du nombre donné en utilisant la boucle.
- Saisir un nombre : 150
Données de sortie
- 2 3 5
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, j, num, estPremier; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); // Trouver tous les facteurs premiers */ for (i = 2; i <= num; i++) { // Vérifiez 'i'est un facteur de num */ if (num % i == 0) { // Vérifier si 'i' est premier */ estPremier = 1; for (j = 2; j <= i / 2; j++) { if (i % j == 0) { estPremier = 0; break; } } // Si 'i' est un nombre premier et est un facteur de num */ if (estPremier == 1) { System.out.print(i + " "); } } } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, j, num, estPremier; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &num); /* Trouver tous les facteurs premiers */ for(i=2; i<=num; i++) { /* Vérifiez 'i'est un facteur de num */ if(num%i==0) { /* Vérifier si 'i' est premier */ estPremier = 1; for(j=2; j<=i/2; j++) { if(i%j==0) { estPremier = 0; break; } } /* Si 'i' est un nombre premier et est un facteur de num */ if(estPremier==1) { printf("%d, ", i); } } } return 0; }
import math # Fournir les données d'entrée num = int(input("Saisir un nombre : ")) # Trouver tous les facteurs premiers */ for i in range(2, num + 1): # Vérifiez 'i'est un facteur de num */ if (num % i == 0): # Vérifier si 'i' est premier */ estPremier = True for j in range(2, i//2): if (i % j == 0): estPremier = False break # Si 'i' est un nombre premier et est un facteur de num */ if (estPremier == 1): print(i, " ")
Exercice 20
Écrivez un programme pour saisir un numéro de l'utilisateur et vérifiez si le numéro donné est le numéro Armstrong ou non.
Un nombre Armstrong est un nombre à n chiffres qui est égal à la somme de la nième puissance de ses chiffres. Par exemple
$$6=6^1=6$$ $$371=3^3+7^3+1^3=371$$
- Saisir un nombre : 371
Données de sortie
- 371 est un nombre Armstrong
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int copie, num, dernierchiffre, chiffres; double somme; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); somme = 0; // Copiez la valeur de num pour le traitement */ copie = num; // Trouver le nombre total de chiffres de num */ chiffres = (int) Math.log10(num) + 1; // Calculer la somme de la puissance des chiffres */ while (num > 0) { // Extraire le dernier chiffre */ dernierchiffre = num % 10; // Calculer la somme de la puissance du dernier chiffre */ somme = somme + Math.floor(Math.pow(dernierchiffre, chiffres)); // Supprimer le dernier chiffre */ num = num / 10; } // Vérifiez le numéro Armstrong */ if (copie == somme) { System.out.print(copie + " est un nombre Armstrong"); } else { System.out.print(copie + " n'est pas un nombre Armstrong"); } // fermer les ressources clavier.close(); } }
#include <stdio.h> #include <math.h> int main() { int copie, num, dernierchiffre, chiffres, somme; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &num); somme = 0; /* Copiez la valeur de num pour le traitement */ copie = num; /* Trouver le nombre total de chiffres de num */ chiffres = (int) log10(num) + 1; /* Calculer la somme de la puissance des chiffres */ while(num > 0) { /* Extraire le dernier chiffre */ dernierchiffre = num % 10; /* Calculer la somme de la puissance du dernier chiffre */ somme = somme + round(pow(dernierchiffre, chiffres)); /* Supprimer le dernier chiffre */ num = num / 10; } /* Vérifiez le numéro Armstrong */ if(copie == somme) { printf("%d est un nombre Armstrong", copie); } else { printf("%d n'est pas un nombre Armstrong", copie); } return 0; }
Dans le programme ci-dessus, round() et pow() sont des fonctions mathématiques présentes dans le fichier d'en-tête math.h.
- La fonction round() arrondit un nombre fractionnaire à l'entier le plus proche.
- La fonction pow() est utilisée pour trouver la puissance de n'importe quel nombre
import math # Fournir les données d'entrée num = int(input("Saisir un nombre : ")) somme = 0 # Copiez la valeur de num pour le traitement */ copie = num # Trouver le nombre total de chiffres de num */ chiffres = int(math.log10(num)) + 1 # Calculer la somme de la puissance des chiffres */ while (num > 0): # Extraire le dernier chiffre */ dernierchiffre = num % 10 # Calculer la somme de la puissance du dernier chiffre */ somme = somme + (pow(dernierchiffre, chiffres)) # Supprimer le dernier chiffre */ num = num // 10 # Vérifiez le numéro Armstrong */ if (copie == somme): print(copie, " est un nombre Armstrong") else: print(copie, " n'est pas un nombre Armstrong")
Exercice 21
Écrivez un programme pour entrer un nombre et vérifiez si le nombre est parfait ou non.
Un nombre parfait est un entier positif qui est égal à la somme de ses diviseurs positifs appropriés.
Par exemple: 6 est le premier nombre parfait
Les diviseurs appropriés de 6 sont 1, 2, 3.
Somme de ses diviseurs stricts = 1 + 2 + 3 = 6.
Par conséquent, 6 est un nombre parfait.
- Saisir un nombre : 6
Données de sortie
- 6 est un nombre parfait
Corrigé
import java.util.Scanner; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, num, somme = 0; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); // Calculer la somme de tous les diviseurs stricts */ for (i = 1; i < num; i++) { /* Si i est un diviseur de nombre */ if (num % i == 0) { somme += i; } } // Vérifiez si la somme des diviseurs stricts est égale à num */ if (somme == num) { System.out.println(num + " est un nombre parfait"); } else { System.out.println(num + " n'est pas un nombre parfait"); } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, num, somme = 0; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &num); /* Calculer la somme de tous les diviseurs stricts */ for(i=1; i<num; i++) { /* Si i est un diviseur de nombre */ if(num%i == 0) { somme += i; } } /* Vérifiez si la somme des diviseurs stricts est égale à num */ if(somme == num) { printf("%d est un nombre parfait", num); } else { printf("%d n'est pas un nombre parfait", num); } return 0; }
# Fournir les données d'entrée num = int(input("Saisir un nombre : ")) somme = 0 # Calculer la somme de tous les diviseurs stricts for i in range(1, num): if (num % i == 0): somme += i # Vérifiez si la somme des diviseurs stricts est égale à num if (somme == num): print(num, " est un nombre parfait") else: print(num, " n'est pas un nombre parfait")
Exercice 22
Écrivez un programme pour saisir des nombres de l'utilisateur et vérifiez si le nombre est Fort ou non.
Un nombre fort est un nombre spécial dont la somme de la factorielle de ses chiffres est égale au nombre d'origine.
Par exemple: 145 est un nombre fort. Puisque, \(1! + 4! + 5! = 145 \)
- Saisir un nombre : 145
Données de sortie
- 145 est un chiffre fort
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int i, copie, num, dernierchiffre, somme, fact; // Fournir les données d'entrée System.out.print("Saisir un nombre : "); num = clavier.nextInt(); // prendre une copie de la valeur de num */ copie = num; somme = 0; // Trouver la somme de la factorielle des chiffres */ while (num > 0) { // Obtenir le dernier chiffre de num */ dernierchiffre = num % 10; // Trouver la factorielle du dernier chiffre */ fact = 1; for (i = 1; i <= dernierchiffre; i++) { fact = fact * i; } // Ajouter factorielle à la somme */ somme = somme + fact; // Supprimer le dernier chiffre */ num = num / 10; } // Vérifier l'état du nombre */ if (somme == copie) { System.out.println(copie + " est un chiffre fort"); } else { System.out.println(copie + " n'est pas un chiffre fort"); } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int i, copie, num, dernierchiffre, somme; long fact; /* Saisir les données d'entrée */ printf("Saisir un nombre : "); scanf("%d", &num); /* prendre une copie de la valeur de num */ copie = num; somme = 0; /* Trouver la somme de la factorielle des chiffres */ while(num > 0) { /* Obtenir le dernier chiffre de num */ dernierchiffre = num % 10; /* Trouver la factorielle du dernier chiffre */ fact = 1; for(i=1; i<=dernierchiffre; i++) { fact = fact * i; } /* Ajouter factorielle à la somme */ somme = somme + fact; /* Supprimer le dernier chiffre*/ num = num / 10; } /* Vérifier l'état du nombre */ if(somme == copie) { printf("%d est un chiffre fort", copie); } else { printf("%d n'est pas un chiffre fort", copie); } return 0; }
import math # Fournir les données d'entrée num = int(input("Saisir un nombre : ")) # prendre une copie de la valeur de num */ copie = num somme = 0 # Trouver la somme de la factorielle des chiffres */ while (num > 0): # Obtenir le dernier chiffre de num */ dernierchiffre = num % 10 # Trouver la factorielle du dernier chiffre */ fact = 1 for i in range(1, dernierchiffre+1): fact = fact * i # Ajouter factorielle à la somme */ somme = somme + fact # Supprimer le dernier chiffre */ num = num // 10 # Vérifier l'état du nombre if (somme == copie): print(copie, " est un chiffre fort") else: print(copie, " n'est pas un chiffre fort")
Exercice 23
Écrivez un programme pour afficher la série de Fibonacci jusqu'à n termes en utilisant une boucle.
- Saisir le nombre de termes : 5
Données de sortie
- Termes de Fibonacci : 0 - 1 - 1 - 2 - 3 - 5 - 8
Corrigé
import java.util.Scanner; import java.lang.Math; public class Test { public static void main(String[] variables) { Scanner clavier = new Scanner(System.in); int a, b, c, i, n; // Fournir les données d'entrée System.out.print("Saisir le nombre de termes : "); n = clavier.nextInt(); // Initialisation de Fibonacci */ a = 0; b = 1; c = 0; System.out.println("Termes de Fibonacci : \n"); // Itérer sur n termes */ for (i = 1; i <= n; i++) { System.out.print(c + " - "); a = b; // Copier n-1 à n-2 b = c; // copier valeur actuelle dans n-1 c = a + b; // Nouveau terme } // fermer les ressources clavier.close(); } }
#include <stdio.h> int main() { int a, b, c, i, n; /* Saisir les données d'entrée */ printf("Saisir le nombre de termes: "); scanf("%d", &n); /* Initialisation de Fibonacci */ a = 0; b = 1; c = 0; printf("Termes de Fibonacci : \n"); /* Itérer sur n termes */ for(i=1; i<=n; i++) { printf("%d, ", c); a = b; // Copier n-1 à n-2 b = c; // copier valeur actuelle dans n-1 c = a + b; // Nouveau terme } return 0; }
# Fournir les données d'entrée n = int(input("Saisir un nombre : ")) # Initialisation de Fibonacci */ a = 0 b = 1 c = 0 print("Termes de Fibonacci : ") # Itérer sur n termes */ for i in range(1, n+1): print(c, " - ") a = b # Copier n-1 à n-2 b = c # copier valeur actuelle dans n-1 c = a + b # Nouveau terme