Curriculum and Labs for Engineering Education

cancel
Showing results for 
Search instead for 
Did you mean: 

Challenge mathématique #37 : Y a-t-il une image dans les nombres premiers ?

Bonjour ! un nouveau défi pour octobre

Recherchez les secrets de l'univers

Un précédent challenge résolu était de dessiner des nombres en suivant une spirale (avec une disposition entrante).

Des rumeurs indiquent que les nombres premiers auraient une disposition particulière dans une telle spirale de nombres.

En remplaçant les nombres par des points en noir et blanc ou en couleurs, des lignes et une organisation apparaitrait !


Voici comment disposer les chiffres en spirale et un exemple de pattern qui se dessine :

spirale.png     Pattern.jpg

Le défi de ce mois d’octobre sera de retrouver les nombres premiers avec LabVIEW, de les disposer en spirale de nombre et de les différentier par un petit point noir. Cela permettra de révéler un motif.


A gagner ? Ce mois-ci, il me reste des Livres LabVIEW de 2eme édition, ce n’est pas la dernière version mais toujours utile de le posséder (442 pages).

Le gagnant sera tiré au sort parmi les candidats qui afficherons simplement le résultat d’un tableau de 200 x200 minimim dans un graphe XY. ( Requis pour commencer à voir apparaître un pattern)


Voici un exemple de résultat dans un graphe rempli avec des nombres aléatoires:

Graphe XY aléatoire 10k.jpg

Si vous le souhaitez, un défi complémentaire sera de mettre en valeur les nombres premiers particuliers pour magnifier révéler au mieux les motifs. Il existe différentes méthodes pour cela. Cette « Spirale d'Ulam » pourra être affichée par exemple dans graphe d’intensité XY (qui permet différentes intensités de couleurs) ou de sélectionner plusieurs tailles de points dans un graphe.

Un défi sera également de faire attention a ne pas calculer et afficher les valeurs pendant des heures...


Pour gagner, vous pouvez m’envoyer vos codes ch37_votre pseudo.vi à emmanuel.roset@ni.com, je les publierai en fin de mois. Ainsi que poster « code envoyé » sur la communauté afin de ne pas perdre de codes dans les emails.


N’hésitez pas également à communiquer et à poster vos graphes en cours de challenge pour avoir un aperçu des résultats !

Bon défi




Comments
Nico_EMC
Member
Member
on

Bonjour Emmanuel

J'ai un problème, c'est qu'un graph 10000x10000, c'est trop grand pour mon écran. Je peux afficher en 1000x1000 (en utilisant un peu l'ascenseur), mais honêtement, je trouve que le motif est plus joli en 100x100

Sebastien_D
Member
Member
on

Bonjour à tous !

Nico_EMC, est ce que tu pourrais poster une image du motif que tu obtiens avec un graphe 100x100 ? J'ai déjà fait tout le code (affichage de la spirale avec mise en valeur des nombres premiers) et tout testé, et mes observations sont cohérentes, mais je ne suis pas satisfait du motif, j'ai l'impression qu'il est beaucoup plus marqué sur l'image d'Emmanuel... Est ce que tu utilises une intensité particulière pour certains points ? Si oui lesquels? Merci !Capture.PNG

Nico_EMC
Member
Member
on

Sebastien

J'obtiens la même chose que toi, mais j'ai mis des points plus gros et ajusté la taille du graph pour qu'il n'y ai pas de "noir" entre les points :

100x100.png

emmanuel-fr
Member
Member
on

Bonjour,

J'ai modifié l'énoncé afin de réduire le pattern à 200 x 200 pour la validation, qui est le minimum pour commencer à voir apparaître un pattern. (ou +100 -100 si on prend les coordonnées à 0 au centre du graphe.)

De nombreux sites montrent comment mettre en avant certains motifs et nombres particuliers. (je ne dévoile pas tout non plus).

Par contre Nico, je pense que vous avez eu la main lourde sur la taille des points, ce n'est plus des motifs cachés mais cela semble un peu chargé et les points doivent se chevaucher

emmanuel-fr
Member
Member
on

Une réflexion personnelle qui n'apporte rien au défi, mais pour la structure globale, je pense plus a un motif avec une progression en 3 dimensions... comme celle-ci http://www.divisorplot.com/6.html

ghost67
Member
Member
on

Salut j'envoi le code j'ai mis en parametre la taille voulu pour le graphe pour 1000 x 1000 il faut 10s de calcul

Nico_EMC
Member
Member
on

Effectivement, je me suis un peu planté. Du coup, ça devient beaucoup plus apréciable, même pour des grands nombres 100x100_v2.png

Nico_EMC
Member
Member
on

Code envoyé, mais je ne mets que 0.6s pour un graph 1000x1000

FLBPeriat
Member
Member
on

Code envoyé

ghost67
Member
Member
on

Waou 0,6s je veux bien voir la partie calcul NB premier 🙂 mais bon faut que je change de pc aussi je pense 😉

Nico_EMC
Member
Member
on

Pour le PC, j'ai un i5, ça peut aider.

Pour les nombres premier, c'est pas compliqué, si c'est pas un multiple d'un nombre antérieur, c'est premier.NombresPremiers.png

FLBPeriat
Member
Member
on

Tu pourrais encore optimiser ton code

Bilsix
NI Employee (retired)
on

Prime_number.jpg

Euh... Il existe une fonction native sous LV qui permet de vérifier si un nombre est premier... Non ?

Bilsix.
ghost67
Member
Member
on

Bon je suis aussi a - de 1s je faisais 2000x2000 et pas 1000x1000 d'où le tps et j'ai optimisé un peu sinon la fonction LV ça simplifie bcp la vie faut que je teste ce soir suis au taf la

Didier_Bleses
Member
Member
on

Code envoyé.

sur un i7 à 3.6GHz :

  • 0.12s pour un 1000x1000
  • 0.68s pour un 2000x2000
PhilB58
Active Participant
Active Participant
on

Salut à tous,
j'obtiens un truc dans le genre, ça vous parle???

Challenge 37.png

Le challenge est double pour moi car je n'avais pas participé au challenge de la spirale de nombres, j'ai donc du commencer par là. Ça, c'est fait, maintenant l'affichage en XY des nombres premiers de la spirale, mais je ne vois pas d'image

Nico_EMC
Member
Member
on

Oui, ça resemble à ça, il faut juste enlever le cadrillage du graph XY

PhilB58
Active Participant
Active Participant
on

Merci Nico

J'enlève le cadrillage, j'optimise mon code, je commente, puis je participe

joke67000
Member
Member
on

Bonjour tout le monde, juste histoire de se marrer un peu, "j'connais un gars,ben il l'a fait au tableau !"challenge37.jpg

Nico_EMC
Member
Member
on

Jolie le tableau. Ca doit prendre du temps, à la craie

Bilsix
NI Employee (retired)
on

Ouah, vous êtes tous hyper rapides !! Je mets entre 18s et 19s juste pour un 200x200 !

Bilsix.
PhilB58
Active Participant
Active Participant
on

Joke, tu as des conseils à donner pour de belles interfaces????
Ou alors tu as juste un truc dans ta souris qui te donne du "peps" et met de la couleur et de la structure un peu partout

joke67000
Member
Member
on

Salut Phil, salut tout le monde. il suffit de créer un bouton (par exemple)  sur la face avant puis clic droit (sur le bouton), "avancé" puis "personnaliser". J'ai récemment créer des controles (commandes) avec des gifs annimés.l'IHM devient alors plus parlante (et agréable) pour l'utilisateur. Il y a quelques temps, j'avais trouvé des commandes Labview un peu stylisées sur le tres bon site devellopez.com ( sans faire de pub ). Sinon quelq'un a essayé de mettre en valeur les autres nombres (pas premier) avec leur quantité de diviseurs? (comme dans la spirale d'ulam en bleu dans l'énoncé) 

David-K
Member
Member
on

Salut tout le monde

Pour les temps d'exécution avec un i5 2,8GHz:

1000*1000 : 77ms

2000*2000 : 324 ms

Pour la spirale d'Ulam, les temps sont un peu plus long (le temps de calculer les diviseurs):

1000*1000 : 11817ms

2000*2000 :71068ms

Pour le moment pour mettre les diviseurs en valeurs j'utilise un graphe d'intensité:

Mise en valeur des diviseurs.png

Code envoyé au passage

emmanuel-fr
Member
Member
on

Code bien recu, bravo pour la mise en valeur des diviseurs, on voit vraiment le pattern apparaitre !

PhilB58
Active Participant
Active Participant
on

Heu, je ne trouve pas la fonction native de LV pour savoir si un nombre est premier, vous avez un truc pour la trouver?

J'ai LV complet (mais version 2014)!!
Ou alors, il faut que j'optimise celle que j'ai faite parce que là, pour une matrice de 1000x1000, il me faut 7 minutes de calculs avant de pouvoir afficher le graphe XY ... mais ça marche, faut juste être patient

Bilsix
NI Employee (retired)
on

Normalement, sur un diagramme quelconque, tu peux faire "ctrl+espace", puis dans la barre de recherche, tu peux taper "nombre premier" (ou "prime number" si tu utilises LabVIEW in English). Ensuite, tu selectionne le bon vi (il ne devrait y en avoir qu'un...) puis tu appuies Enter !

Bilsix.
PhilB58
Active Participant
Active Participant
on

Merci Bilsix,

Je viens d'apprendre un truc, le ctrl+espace sur le diagramme, merci

Par contre, LV construit une liste, et quand j'interroge avec "prime", ça ne donne rien, et avec "premier", LV me propose MON vi, je suis un peu déçu

Je n'aurais pas cette fonction native donc; je vais devoir optimiser , ça me fera un excellent exercice, ça fait des challenges à tiroirs

Bilsix
NI Employee (retired)
on

Le ctrl+espace est sans nul doute le raccourci clavier le plus utile de tous les temps ! (comment ça "j'exagère un peu" ?)

Le vi "Prime Number" n'était peut-être pas présent dans LabVIEW 14 (je travaille actuellement avec le 16). Mais on peut s'arranger en MP... En plus le vi n'est même pas "verrouillé par un mot de passe" (comme certains vi natifs sous LabVIEW), du coup je peux te l'envoyer en étant certain qu'il ne fait pas référence à d'autres vi (qui pourraient possiblement ne pas être présents dans LaVIEW 14) !

Bilsix.
Bilsix
NI Employee (retired)
on

Prime_Number.png

Bilsix.
Bilsix
NI Employee (retired)
on

Finalement, je ne suis pas sur qu'on puisse envoyer un vi en MP, donc je passe par un snippet, c'est plus simple, et puis tout le monde peut y avoir accès. Il te suffit d'enregistrer sur ton ordi l'image que j'ai envoyée ci-dessus, d'ouvrir l'explorateur à l'endroit ou il y a l'image, de la faire glisser sur un diagramme vide et... d'observer la magie opérer !

Bilsix.
PhilB58
Active Participant
Active Participant
on

Merci Bilsix, je vais essayer le drag and drop sur un diagramme, j'aime la magie

Mais je vais tout de même essayer d'optimiser mon code histoire de m'amuser un peu, puis comme exercice aussi, mais sans laisser passer la date limite pour le challenge

PhilB58
Active Participant
Active Participant
on

Bhuuu, ça n'a rien fait

Mais l'image est floue (ou trop petite), difficile de comprendre le code dans ces conditions, dommage!!!

PhilB58
Active Participant
Active Participant
on

Code envoyé

beno72
Member
Member
on

code envoyé

emmanuel-fr
Member
Member
on

J'ai reçu une deuxième version de Didier_Bleses. Merci, il est vraiment très abouti sur l'analyse du graph et la mise en avant des patterns. Intéressant a télécharger à la fin du mois.

Plus que quelques jours

emmanuel-fr
Member
Member
on

Le mois est terminé, il est temps de partager les codes et de remporter un Livre LabVIEW

Voici les codes participants, tout le monde a réussi. Si vous n'êtes pas dans la liste, dites le moi.

Prochain tirage du loto est Samedi 5. Nous prendrons le numéro chance pour départager sachant qu'il y a 8 participants. Si 9 ou 10 alors nous attendrons le suivant.

Dites moi aussi si vous laissez la chance à quelqu'un d'autre de remporter le Livre. (D'ailleurs un autre type de prix est en prévision pour l'année prochaine.)

1 et 1b -defis_37_ghost67280.viok
2 - ch37_NicoEMC.viok
3 - Ch37_FLBP.viok
4 - ch37_Bleses_V2ok avec diviseurs et modifications en temps réel
5 - Challenge 37 David-Kok avec diviseurs mis en avant
6 - CM37_Bilsixok
7 - PhilB58ok
8 - Beno72_ch37.viok
emmanuel-fr
Member
Member
on

Merci pour les codes, tout le monde a réalisé des algorithmes assez différents pour y arriver. Toujours inspirant.

En tout cas bravo a Bleses, voivi un appercu de sa face avant. Il a qui a fait pas mal d'efforts pour fournir une présentation en mode diviseurs en temps réel

Bleses.jpg

Bilsix
NI Employee (retired)
on

Hate de découvrir vos codes super-rapides !
Emmanuel, comme en témoigne mon avatar, j'ai déjà eu le bonheur d'être tiré au sort, je laisse donc plus de chance aux autres en me retirant du tirage.

Bilsix.
emmanuel-fr
Member
Member
on

hahaha super l'avatar ! c'est noté

Codes en ligne en dessous de l'énoncé

Nico_EMC
Member
Member
on

Je laisse aussi ma chance à ceux qui n'ont pas encore le livre.

Didier_Bleses
Member
Member
on

Merci pour les code publiés.

Ayant déja eu le livre 2 fois, je passe mon tour pour le tirage.

PhilB58
Active Participant
Active Participant
on

Pas de gagnant pour ce challenge??

emmanuel-fr
Member
Member
on

Oui oui en effet, j'étais juste un peu chargé depuis lundi.

Alors suivant ce qui a été défini, le tirage de samedi 5 novembre a donné le numéro chance 5

En tenant compte des passages de tours de chacun, voici le tableau décallé :

Ordre


1
1 et 1b -defis_37_ghost67280.vi
ok
2
3 - Ch37_FLBP.vi
ok
3
5 - Challenge 37 David-K
ok avec diviseurs mis en avant
4
7 - PhilB58
ok
5
8 - Beno72_ch37.vi
ok




Passent leur tour




2 - ch37_NicoEMC.vi
ok


4 - ch37_Bleses_V2
ok avec diviseurs et modifications en temps réel


6 - CM37_Bilsix
ok

Le gagnant est donc Beno72

En tout cas encore merci pour les codes qui pourront servir à de nombreux développeurs LabVIEW debutants ou expérimentés comme base de trucs et astuces. Même mes codes les plus simples sont parfois faits avec une variante de logique profitable.

beno72
Member
Member
on

Ouah, j y croyais pas du tout. Un grand merci aux trois désistements.

Contributors