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
» Logiciel de planétarium.
Spirale de Ulam Emptypar Jack Aujourd'hui à 10:03

» Un autre pense-bête...
Spirale de Ulam Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Spirale de Ulam Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Spirale de Ulam Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Spirale de Ulam Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Spirale de Ulam Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Spirale de Ulam Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Spirale de Ulam Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Spirale de Ulam Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Spirale de Ulam Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Spirale de Ulam Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Spirale de Ulam Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Spirale de Ulam Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Spirale de Ulam Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Spirale de Ulam Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -28%
-28% Machine à café avec broyeur ...
Voir le deal
229.99 €

 

 Spirale de Ulam

Aller en bas 
3 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7017
Age : 74
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 : 7017
Age : 74
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 : 1266
Age : 70
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 : 7017
Age : 74
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 : 2747
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: