FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Spirale de Ulam Emptypar Klaus Aujourd'hui à 1:15

» item_index(résolu)
Spirale de Ulam Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Spirale de Ulam Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Spirale de Ulam Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Spirale de Ulam Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Spirale de Ulam Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Spirale de Ulam Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Spirale de Ulam Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Spirale de Ulam Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Spirale de Ulam Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Spirale de Ulam Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Spirale de Ulam Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Spirale de Ulam Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Spirale de Ulam Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Spirale de Ulam Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Funko POP! Jumbo One Piece Kaido Dragon Form : où l’acheter ?
Voir le deal

 

 Spirale de Ulam

Aller en bas 
3 participants
AuteurMessage
papydall

papydall


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

Spirale de Ulam Empty
MessageSujet: Spirale de Ulam   Spirale de Ulam EmptyVen 21 Oct 2016 - 16: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 !  Spirale de Ulam Yeux11
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


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

Spirale de Ulam Empty
MessageSujet: Re: Spirale de Ulam   Spirale de Ulam EmptyDim 23 Oct 2016 - 5: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
http://papydall-panoramic.forumarabia.com/
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Spirale de Ulam Empty
MessageSujet: Re: Spirale de Ulam   Spirale de Ulam EmptyLun 24 Oct 2016 - 8: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
http://www.unilim.fr/pages_perso/jean.debord/index.htm
papydall

papydall


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

Spirale de Ulam Empty
MessageSujet: Re: Spirale de Ulam   Spirale de Ulam EmptyLun 24 Oct 2016 - 15: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 - 12:54, édité 1 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jjn4

jjn4


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

Spirale de Ulam Empty
MessageSujet: +++   Spirale de Ulam EmptyLun 24 Oct 2016 - 17: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
http://jjn4.e-monsite.com
Contenu sponsorisé





Spirale de Ulam Empty
MessageSujet: Re: Spirale de Ulam   Spirale de Ulam Empty

Revenir en haut Aller en bas
 
Spirale de Ulam
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Structure spirale n°1
» Structure spirale n°2
» comment faire des cercles contigus sur spirale.

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: