FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» I Love You
par papydall Aujourd'hui à 1:15

» mise a jour calculatrice
par joeeee2017 Aujourd'hui à 1:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Hier à 18:49

» [solved] 3D_LINE How to ?
par papydall Hier à 6:51

» supprimé
par joeeee2017 Dim 15 Oct 2017 - 20:02

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» supprimé
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

» Un petit "coucou" à tous les Panoramiciens !
par Jack Ven 6 Oct 2017 - 10:24

» Pourquoi le compilateur stagne
par mindstorm Mer 4 Oct 2017 - 20:38

» Panoramic ?
par Marc37 Mer 4 Oct 2017 - 0:39

» Premiers pas avec Arduino
par Marc37 Mer 4 Oct 2017 - 0:29

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Spirale de Ulam

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
papydall

avatar

Nombre de messages : 5541
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Spirale de Ulam   Ven 21 Oct 2016 - 17:47

Code:

rem ============================================================================
rem            Spirale de Ulam
rem              Par Papydall
rem ============================================================================
rem Stanislas Marcin Ulam assistait à une conférence fort ennuyeuse et longue.
rem Pour tromper l ennui, il prit son crayon et écrivit les entiers naturels en
rem colimaçon en utilisant les carreaux de sa page.
rem Puis il noircit les cases occupées par les nombres premiers.
rem Il s apperçut que d étranges alignements apparaissaient qu il fallait expliquer.
rem La spirale qui porte son nom était née.
rem On l’appelle aussi spirale des nombres premiers ou horloge d’Ulam.
rem ============================================================================
rem En effet, ces alignements correspondent à des polynômes du 2ème degré du type:
rem                ______________________
rem               |                      |
rem               |  y = a.x² + b.x + c  |
rem               |______________________|                      |
rem
rem ============================================================================
rem Déjà Euler avait proposé la formule n² - n + 41 qui, pour n compris entre 1
rem et 40 ne donne que des nombres premiers.
rem Les plus célèbres sont les suivantes:
rem                _________________________
rem               |                         |
rem               |  y = 4x² + 4x   + 3     |
rem               |  y = 4x² + 18x  + 26    |
rem               |  y = 4x² + 24x  + 43    |
rem               |  y = 4x² + 12x  + 7     |
rem               |  y = 4x² + 162x + 1681  |
rem               |  y = x²  + x    + 17    |
rem               |  y = x²  + x    + 41    | <---- Formule découverte par Euler
rem               |_________________________|
rem ============================================================================
Init()
' Exécutez successivement ces deux Spirales
 Spirale_Ulam(12)
' Spirale_Ulam_2(70)
caption 0,"Terminé"
end
rem ============================================================================
SUB Init()
    dim prem, p, q, c1, c2, i, j, n$
    width 0,screen_y : height 0,screen_y
    picture 10 : width 10,width(0)-50 : height 10,height(0)-50
    top 10,10  : left 10,25 : color 10,0,0,0
    print_target_is 10 : 2d_target_is 10 : font_color 10,0,0,0 : font_bold 10
    c1 = width(10)/2-40  : c2 = height(10)/2-40+30
    2d_pen_color 255,0,0 : 2d_fill_on
    alpha 20 : top 20,20 : left 20,150 : font_bold 20 : font_size 20,14: font_color 20,200,100,50
    hide 20
END_SUB
rem ============================================================================
' Calculer la position d'un entier q quelconque
SUB placer(q)
    dim_local d : ' d est la distance entre le nombre q et le plus petit nombre de la couronne p.
    dim_local e : ' e+1 est le numéro du coté de la couronne où se trouve q.
    d = q - 2 * p * 2 * p - 1
    e = Int(d / (1 + 2 * p))
    select e
        case 0 : i = 0 + 4 * p * p + p - q + 1 : j = 0 - p
        case 1 : i = 0 - p : j = 0 - 4 * p * p - 3 * p - 1 + q
        case 2 : i = 0 - 4 * p * p - 5 * p - 2 + q : j = 0 + p + 1
        case 3 : i = 0 + p + 1 : j = 0 + 4 * p * p + 7 * p + 4 - q
    end_select
End_Sub
rem ============================================================================
' Déterminer si q est premier
SUB premier(q)
    dim_local a,m
    prem = 1
    m = 2 : a = 1
    While ((m * m <= q) And (a <> 0))
        a = mod(q,m) : m = m + 1
    end_while
    If ((a <> 0) And (q > 1))
       prem = 1
    Else
       prem = 0
    end_if
END_SUB
rem ============================================================================
SUB Spirale_Ulam(couronne)
    for p = 0 to couronne
        caption 0,"Couronne : " + str$(p)+ " / " + str$(couronne)
        for q = 4*p*p+1 to (2*p+2)*(2*p+2)
            n$ = str$(q)
            while len(n$) < 3 : n$ = "0" + n$ : end_while
            Premier(q) : Placer(q)
            if prem = 1
              2d_fill_color 255,0,0 : 2d_circle 10+c1+30*i,8+c2+30*j,15
            end_if
            if n$ = "001"
               font_color 10,255,255,255 : 2d_fill_color 0,0,255
            else
               font_color 10,000,000,000 : 2d_fill_color 255,255,0
            end_if
            print_locate c1+30*i,c2+30*j : print n$
       next q
    next p
    caption 20," Les cercles rouges contiennent les nombres premiers " : show 20
END_SUB
rem ============================================================================
SUB Spirale_Ulam_2(couronne)
    for p = 0 to couronne
        caption 0,"Couronne : " + str$(p)+ " / " + str$(couronne)
        for q = 4*p*p+1 to (2*p+2)*(2*p+2)
            n$ = str$(q)
            while len(n$) < 3 : n$ = "0" + n$ : end_while
            Premier(q) : Placer(q)
            if prem = 1
                2d_pen_color 255,0,0 : 2d_circle c1+4*i,c2+4*j,2
            end_if
       next q
    next p
    caption 20," Observez ces alignements des nombres premiers " : show 20
END_SUB
rem ============================================================================

Bon divertissement !  
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

Nombre de messages : 5541
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Spirale de Ulam   Dim 23 Oct 2016 - 6:02

Je sais parfaitement que la spirale d'Ulam  n’est pas une spirale facile à comprendre.
En voici une autre, moins coriace.

Code:

rem ============================================================================
rem         Une autre spirale
rem ============================================================================

dim xc,yc,c,c2,theta,r,i,x,y
full_space 0 : color 0,0,0,0 : 2d_fill_on
xc = width(0)/2 : yc = height(0)/2
c = 4 : c2 = 1.5*c
for i = 1 to 4000
    theta = sqr(i) * 2 * pi : r = sqr(i)
    x = 0-cos(sqr(i)*2*pi)*sqr(i)
    y = sin(sqr(i)*2*pi)*sqr(i)
    2d_fill_color mod(theta,255),abs(255-theta),mod(theta,100)
    2d_circle xc+c2*x,yc+c2*y,c
next i
rem ============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
jean_debord

avatar

Nombre de messages : 756
Age : 63
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Re: Spirale de Ulam   Lun 24 Oct 2016 - 9:57

Merci papydall !

Voilà encore de bons candidats pour une adaptation en FBPano.

Cela me rappelle que j'ai écrit une DLL pour calculer sur de grands nombres entiers. Elle aussi mériterait d'être intégrée à FBPano.

Sans doute pour la prochaine mise à jour !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
papydall

avatar

Nombre de messages : 5541
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Spirale de Ulam   Lun 24 Oct 2016 - 16:16

Salut Jean_debord et merci !

Voici un autre algorithme pour tracer une spirale carrée.


Code:

rem ============================================================================
rem         Spirale carrée
rem ============================================================================
dim x, y, pas , dist, NbTour
width 0 , screen_x *.75  : height 0 , screen_y *.75
x = width(0)/2 : y = height(0)/2
pas    = 1  : ' pas de déplacement
dist   = 10 : ' distance entre les spires
NbTour = 50 : ' Nombre de spires de la spirales
2d_pen_width 2 : 2d_poly_from x, y : ' Départ
repeat
    y = y + dist*pas : 2d_poly_to x,y : ' Vers le bas
    x = x + dist*pas : 2d_poly_to x,y : ' Vers la droite
    pas = pas + 1    : ' pour ne pas repasser ultérieurement par un point déjà parcouru
    y = y - dist*pas : 2d_poly_to x,y : ' Vers le haut
    x = x - dist*pas : 2d_poly_to x,y : ' Vers la gauche
    pas = pas + 1
until pas > NbTour
rem ============================================================================

NB : Le code de la Spirale d’Ulam, ci-haut posté mérite d’être examiné de près, notamment la SUB Placer(q)


Dernière édition par papydall le Lun 23 Jan 2017 - 14:54, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
jjn4

avatar

Nombre de messages : 1601
Date d'inscription : 13/09/2009

MessageSujet: +++   Lun 24 Oct 2016 - 18:24

La dernière spirale est sans doute
à relier au mouvement cubiste ?
(Bravo, en tout cas !)
Laughing alien cheers Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
Contenu sponsorisé




MessageSujet: Re: Spirale de Ulam   

Revenir en haut Aller en bas
 
Spirale de Ulam
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Rampes hélicoïdales
» Structure spirale n°2

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: