π
<-
Chat plein-écran
[^]

[Mini-Challenge Basic #6] : Nombres parfaits

Sous-forums réunissant les mini-challenges en TI-Basic Nspire

[Mini-Challenge Basic #6] : Nombres parfaits

Message non lude davidElmaleh » 06 Juil 2014, 18:20

Le but de ce défi est de créer une fonction isperfect(n) qui prend un compte un entier n et qui renvoie true s'il est parfait et false sinon.

La fonction sera de la forme:
Code: Tout sélectionner
Define isperfect(n)=
Func
votreCode
EndFunc


Vous serez noté sur la rapidité d’exécution du programme en fonction de la grandeur du nombre en entrée.
Image
Avatar de l’utilisateur
davidElmalehProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 19.6%
 
Messages: 409
Images: 9
Inscription: 14 Oct 2012, 23:30
Localisation: Paris 19
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PSI*

Re: [Mini-Challenge Basic #6] : Nombres premiers

Message non lude Bisam » 06 Juil 2014, 18:33

Euh, si le critère est la taille, il existe des fonctions... super non optimales au niveau du temps d'exécution !
Et puis, il y a déjà eu un concours sur les nombre premiers palindromes il y a peu de temps...
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [Mini-Challenge Basic #6] : Nombres premiers

Message non lude davidElmaleh » 06 Juil 2014, 18:41

Je voulais faire le même concours mais pour les nombres parfait. Tu crois que je dois changer?

EDIT: et dans ce cas, le critère serait la rapidité et non la taille
Image
Avatar de l’utilisateur
davidElmalehProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 19.6%
 
Messages: 409
Images: 9
Inscription: 14 Oct 2012, 23:30
Localisation: Paris 19
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PSI*

Re: [Mini-Challenge Basic #6] : Nombres premiers

Message non lude Adriweb » 06 Juil 2014, 19:00

(réponse d'avant l'édit du sujet)

Pour isprime2() : en théorie, Return mod(n!,n^(2))=n*(n-1) marche et est possiblement le plus court (?), mais forcément, il va pas aller bien loin..... :P
(source : formule de Gary Detlefs, sur oeis)

Pas encore réfléchi pour les nombres parfaits.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14615
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [Mini-Challenge Basic #6] : Nombres premiers

Message non lude davidElmaleh » 06 Juil 2014, 19:06

D'ou le but de créer l'algo le plus rapide et non le plus court ;)

EDIT : J'ai cru que tu parlais des nombres parfaits
Avatar de l’utilisateur
davidElmalehProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 19.6%
 
Messages: 409
Images: 9
Inscription: 14 Oct 2012, 23:30
Localisation: Paris 19
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PSI*

Re: [Mini-Challenge Basic #6] : Nombres parfaits

Message non lude Adriweb » 06 Juil 2014, 19:20

Pour les nombres parfaits, voici ma proposition :

Return ∑(i*int(n/i),i,1,n-2)=1+∑(i*int((n-1)/i),i,1,n-1)

C'est une formule montrée par Ruiz (cf. mathworld)
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14615
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [Mini-Challenge Basic #6] : Nombres parfaits

Message non lude davidElmaleh » 06 Juil 2014, 19:52

J'ai une solution plus rapide et beaucoup plus simple
Image
Avatar de l’utilisateur
davidElmalehProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 19.6%
 
Messages: 409
Images: 9
Inscription: 14 Oct 2012, 23:30
Localisation: Paris 19
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PSI*

Re: [Mini-Challenge Basic #6] : Nombres parfaits

Message non lude davidElmaleh » 06 Juil 2014, 20:04

(Dsl pour le double post)

Voila les statistiques pour l'instant pour les participations actuelles
Adriweb : isperfect(10^6) = false en 9 sec. 34 /
davidElmaleh : isperfect(10^6) = false en moins de 100 ms / isperfect(10^9) = false en 1 sec. 57 / isperfect(137438691328) = true en 25 sec.
Image
Avatar de l’utilisateur
davidElmalehProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 19.6%
 
Messages: 409
Images: 9
Inscription: 14 Oct 2012, 23:30
Localisation: Paris 19
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PSI*

Re: [Mini-Challenge Basic #6] : Nombres parfaits

Message non lude Adriweb » 06 Juil 2014, 20:11

Ah mais j'ai pas cherché la rapidité, juste une formule "plutôt courte".
Je pense pas que la vérification triviale soit plus court,e mais je n'ai même pas essayé... :P

Après, il y a sans doute mieux, c'est sur ^^
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14615
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [Mini-Challenge Basic #6] : Nombres parfaits

Message non lude Adriweb » 06 Juil 2014, 20:58

Bon ben la solution triviale est plus courte (et plus rapide) que la formule de ma proposition d'avant ^^

Return n=sum(seq(when(mod(n,i)=0,i,_),i,1,n-1))

(j'ai utilisé _ au lieu de 0 car c'est un poil plus rapide :D (un test avec 1 million de fois montre une différence de 0.1 seconde, d'après le timer du Lua)

Edit : et puisque que c'est sur la rapidité qu'on est évalué :
Return when(mod(n,2)≠0,false,n=sum(seq(when(mod(n,i)=0,i,_),i,1,n-1)))
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14615
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Suivante

Retourner vers Mini-Challenges

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1425 utilisateurs:
>1399 invités
>21 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)