PremierLangage / premierlangage

Server for auto-evaluating exercices
Other
18 stars 9 forks source link

bug: img src="http://somewhereelse" #266

Closed nimdanor closed 5 years ago

nimdanor commented 5 years ago

l'exercice /ComputerScience/python/function/décompostion.pl je pense que c'est a cause de l'images

# Copyright 2016 Dominique Revuz <dr@univ-mlv.fr>
author=Dominique Revuz 
name=decomposition
title= Décomposition en facteurs Premiers  # N'oubliez pas de remplir ce champs svp
tag=join|list|def|parameters|return # N'oubliez pas de remplir ce champs svp
extends=/ComputerScience/python/template/pltest.pl
piste=rouge
text==
## Décomposition en facteurs premiers

Tout entier positif *n* se décompose de manière unique en produit de nombres premiers. Par exemple, *301158* se décompose en
<a href="https://www.codecogs.com/eqnedit.php?latex=2*3^4*11*13^2" target="_blank"><img src="https://latex.codecogs.com/gif.latex?2*3^4*11*13^2" title="2*3^4*11*13^2" /></a>.
###  *contient_puissance*
Écrire une fonction **contient_puissance** qui prend comme arguments un entier positif
*n* et un nombre premier
*p* et qui renvoie le plus grand entier
*k* tel que
*n* est divisible par *p^k* .

## *decomposition*

En utilisant la fonction **contient_puissance** de la question précédente, écrire une fonction
**decomposition**
qui prend comme argument un entier positif
*n*
et qui affiche la décomposition de
*n*
en produit de nombres premiers. Par exemple, appelée avec
*301158*
comme argument, la fonction retourne la chaine :
"2ˆ1 * 3ˆ4 * 11ˆ1 * 13ˆ2"
.

Pensez à utiliser la fonction join des chaines de caractères.

==

# Choisir pltest ou soluce ou expectedoutput

pltest==
>>> contient_puissance(2,2)
1
>>> contient_puissance(13**7,13)
7
>>> contient_puissance(2**3*3**4,3)
4
==
pltest1==
>>> decomposition(2**3*3**4)
2^3*3^4
>>> decomposition(2**3*3**4*11**3*97**2)
2^3*3^4*11^3*97^2

==

before==
random.seed(seed)
t=[]
n=1
for i in [3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41]:
    if random.randint(1,4)==1:
        e=random.randint(1,7)
        t.append(str(i)+"^"+str(e))
        n *= i**e        

ptest2=">>> decomposition("+str(n)+")\n"+"*".join(t)

==

testcode==
def estpremier(p):
    for i in range(2,p//2):
        if p % i == 0:
            return False
    return True

def contient_puissance(n,p):
    """
    >>> contient_puissance(4,2)
    2
    >>> contient_puissance(301158,13)
    2
    >>> contient_puissance(2,2)
    1
    >>> contient_puissance(13**7,13)
    7
    >>> contient_puissance(2**3*3**4,3)
    4
    """
    np=0
    dp=p
    while n % dp == 0:
        np +=1
        dp *= p
    return np

def premiersuivant(k):
    while True:
        k += 1
        if estpremier(k):
            return(k)

def ldecomposition(n):
    p=2
    l=[]
    while n > 1:
        pp=contient_puissance(n,p)
        if pp >0:
            l.append("%d^%d" % (p,pp))
            n /= p**pp
        p = premiersuivant(p)
    return l

def decomposition(n):
    print("*".join(ldecomposition(n)))

==
mciissee commented 5 years ago

linked to #250 and fixed since the addition of $= operator