Le nombre presque premiers avec Python[4scientifique]

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 :

153846187722490
Tableau T

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.

Code Python

#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)

Leave a Reply

Your email address will not be published. Required fields are marked *