Je suis à la recherche d'une personne qui peut me dire quels sont les fautes que j'ai commises dans mon programme et comment les réparer.
Activité :
Soit T un tableau de n entiers strictement positifs (10 ≤ n ≤ 10).
On désire former un autre tableau TS qui contiendra tous les nombres sublimes se trouvant dans le tableau T puis afficher le résultat.
Mon travail:
#declaratoion des cts
m0="entrer le nombre d'elements"
#importation des modules
from numpy import array
t= array([]*10,dtype=int)
ts= array([]*10,dtype=int)
#declaration des modules
def sublime (k):
s = 0
for i in range(1, k+1):
if k%i == 0:
s += i
def saisie (ch):
global n
n=int(input(ch))
def affiche (a,k):
print("le nombre sublime sont:",k)
for i in range (k):
print(a[i],end= " ")
print() #retour a la ligne apres l'affichage
def remptab (k):
global t
for i in range (k):
t[i]=int(input("entrer l'element t[ "+str(i)+"] "))
def trait (a,k):
global ts,s
s=-1
for i in range (k):
if sublime(a[i]) == True :
s=s+1
ts[s] = a[i]
#cors de programme principal
n=saisie(m0)
remptab (n)
trait (t,n)
affiche (ts,s)
Tes fonctions sont mal nommées, on ne comprend pas les différentes étapes amenant à déterminer un nombre sublime.
Sur Wikipedia, on y indique les différentes étapes,
Déterminer si c'est un nombre parfait
Retourner le nombre de diviseurs d'un nombre
Déterminer si le nombre est sublime
Puis finalement retourner la liste des nombres sublimes dans une liste d'entiers.
Un exemple d'implémentation à compléter pourrait être,
def is_perfect(num):
"""Retourne True si le nombre est parfait, sinon False."""
def count_divisors(num):
"""Retourne le nombre de diviseurs d'un nombre."""
def is_sublime(num):
"""Retourne True si le nombre est sublime, sinon False."""
def detect_sublime_numbers(numbers):
"""Retourne la liste des nombres sublimes dans une liste d'entiers."""
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Oui mais son objectif est de le démontrer par l'exécution d'un code python
(En tout cas pour le 1er nombre...)
- Edité par fred1599 2 février 2023 à 10:29:29
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Il faudrait aussi revoir l'utilisation des fonctions, et en particulier le mot-clé return (pour ta saisie, je crois n vaudra tout le temps None de la façon dont tu as fait)
et on essaie d'éviter d'utiliser des variables globales (ici tu n'en as aucunement besoin) en passant par les paramètres de fonctions et leur retour
Un texte identique a été posté sur le site CommentCaMarche. J'ai donné une réponse semblable à celle de umfred. J'ai testé jusqu'à un million avant de regarder sur Wikipedia. Je n'irai pas plus loin ... Je trouve bien le résultat 12 Voici mon code: - #Un nombre égal à la somme de ses diviseurs propres est parfait. # Ça implique de soustraire le nombre lui-même à la somme de ses diviseurs. #Un nombre sublime est un entier naturel dont le nombre des diviseurs et la somme des diviseurs sont tous deux des nombres parfaits. def diviseurs(n): r = int(n**0.5) # Racine carrée. s = 0 # Somme c = 0 # Compte. for d in range(1, r+1): if n % d == 0: # Si d divise n s += d + n//d c += 2 if r*r == n: # Si c'est un carré parfait (ex. 25) s -= r c -= 1 return c, s # Retourner le compte et la somme. # for n in range(1, 100+1): cn, sn = diviseurs(n) cc, sc = diviseurs(cn) cs, ss = diviseurs(sn) if sc-cn == cn and ss-sn == sn: print(n)
Le Tout est souvent plus grand que la somme de ses parties.
Exercice création tableau de diviseurs d'un nombre
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
PB68
Le Tout est souvent plus grand que la somme de ses parties.