Un nombre est dit K-PP (presque premiers), s’il s’écrit sous la forme d’un produit de K nombres non nécessairement distincts :
Exemples :
143=11*13 est un nombre 2-PP car il est le produit de deux nombres pemiers
32=2*2*2*2*2 est un nombre 5-PP car il est le produit de cinq premiers
17=17 est un nombre 1-PP car il est premier
TAF :
Ecrire un programme en python qui permet de remplir un tableau T par N (5≤N≤50) entiers positifs de 3 chiffres, de chercher et d’afficher les K-PP nombres du tableau T. Sachant que K est un entier choisi aléatoirement de l’intervalle [2,5].
Exemple: pour N=5, K=3 et le tableau T suivant :
| 153 | 846 | 187 | 722 | 490 |
Les numéros 153 et 722 sont dits 3-PP et seront affichés puisque :
153=3*3*17
722=2*19*19
NB : un nombre est dit premier s’il est divisible que par 1 et par lui-même, 1 n’est pas un nombre premier.
#module pour lire la taille du tableau
def tailleTableau():
n=int(input('donner la taille du tableau, 5<=n<=50'))
while(not(5<=n<=50)):
n=int(input('erreur, donner la taille du tableau, 5<=n<=50'))
return n
#module pour remplir le tableau avec des nombres de 3 chiffres
def remplirTableau(t,n):
for i in range(0,n):
t[i]=int(input('donner le nombre de 3 chiffres'))
while(not(100<=t[i]<=999)):
t[i]=int(input('erreur, donner un nombre de 3 chiffres'))
#module pour compter le nombre de facteur premier
def facteurPremier(nb):
d=2
fp=0
while(nb!=1):
if(nb%d==0):
nb=nb//d
fp=fp+1
else:
d+=1
return fp
#module pour afficher les nombre k-pp (presque premier)
def pp(t,n):
k=randint(2,5)
print("pour K=",k," il y a ")
for i in range(0,n):
if(facteurPremier(t[i])==k):
print(t[i])
else:
print(".")
#programme principale
from random import randint
from numpy import array
n= tailleTableau()
t=array([int()]*n)
remplirTableau(t,n)
pp(t,n)