Il existe plusieurs approches pour rechercher des facteurs dans un script shell UNIX. En voici deux, l'un utilisant `seq` et `bc` (plus portable) et un autre exploitant les capacités arithmétiques de bash (légèrement plus rapide mais moins portable) :
Méthode 1 :Utiliser `seq`, `bc` et `grep` (Plus portable)
Cette méthode est hautement portable car elle s'appuie sur les utilitaires UNIX standard.
```bash
#!/bin/bash
Obtenir les commentaires de l'utilisateur
read -p "Entrez un nombre : " num
Gestion des erreurs pour les entrées non positives
si (( num <=0 )); alors
echo "Veuillez entrer un entier positif."
sortie 1
fi
Générer des nombres de 1 à num
séquence 1 $num | en lisant je; faire
# Utilisez bc pour effectuer une opération modulo. Cela gère de grands nombres.
if (( $(echo "$num % $i" | bc) ==0 )); alors
écho "$i"
fi
fait
```
Ce script demande d'abord à l'utilisateur un numéro. Il utilise ensuite « seq » pour générer une séquence de nombres de 1 au nombre saisi. La boucle « while » parcourt chaque nombre et « bc » calcule le modulo. Si le modulo est 0, le nombre est un facteur et est imprimé.
Méthode 2 :utilisation de l'arithmétique Bash (moins portable, légèrement plus rapide)
Cette méthode exploite les capacités arithmétiques intégrées de bash, la rendant légèrement plus rapide pour les petits nombres, mais elle n'est peut-être pas aussi portable que la méthode `bc`.
```bash
#!/bin/bash
Obtenir les commentaires de l'utilisateur
read -p "Entrez un nombre : " num
Gestion des erreurs pour les entrées non positives
si (( num <=0 )); alors
echo "Veuillez entrer un entier positif."
sortie 1
fi
Parcourir les nombres de 1 à num
pour (( i=1; i<=num; i++ )); faire
# Vérifiez si i est un facteur en utilisant l'opérateur modulo
si (( num % i ==0 )); alors
écho "$i"
fi
fait
```
Ce script est similaire au premier, mais utilise l'expansion arithmétique intégrée de bash `((...))` pour l'opération modulo, évitant ainsi l'appel externe à `bc`.
Comment exécuter :
1. Enregistrez l'un ou l'autre script dans un fichier (par exemple, `find_factors.sh`).
2. Rendre le script exécutable :`chmod +x find_factors.sh`
3. Exécutez le script :`./find_factors.sh`
Exemple de sortie (pour l'entrée 12) :
```
1
2
3
4
6
12
```
N'oubliez pas de choisir la méthode qui correspond le mieux à vos besoins et aux systèmes sur lesquels vous l'exécuterez. La première méthode (utilisant `bc`) est généralement recommandée pour sa compatibilité plus large. La seconde est plus rapide pour les petits nombres sur les systèmes où l'arithmétique de bash est optimisée.
|