IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

Erreur "system error divide by zero or overflow error"


Sujet :

Turbo Pascal

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Erreur "system error divide by zero or overflow error"
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    PROGRAM BAC2014 ;
    USES WINCRT ;
    VAR i,n,m:integer;
     
     procedure saisir(var n,m:integer);
     begin
       repeat
       writeln('ecrire l''entier n et m');
       readln(n,m);
       until ((n>=100)and(m>n));
     end;
     
     function chercher(m,n:integer):boolean; 
     var i,s,a,x,b,nb,e:integer;
         ch:string;
         test:boolean;
     begin
      for i:=n to m do
      begin
       s:=0;
       str(i,ch);
       for a:=1 to length(ch) do
        begin
        val(ch[i],x,e);
        s:=x+s;
        end;
       nb:=0;
       for b:=1 to i-1 do
        begin
         if (((i-1) mod b)=0) then
         nb:=nb+1;
        end;
     
        if((i mod s=0) and(nb=2)) then
        test:=true
        else test:=false
      end;
      chercher:=test;
     end;
     
    begin
     
    saisir(n,m);
    for i:=n to m do
     begin     
      if chercher(m,n)=true then
      writeln(i,'car',i,' est hashard et son predecesseur ',i-1,'est un nombre premier') ;
     end;
     
    end.
    Je n'ai pas compris où se trouve l'erreur (system error divide by zero or overflow error)

  2. #2
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Erreur "system error divide by zero or overflow error"
    Bonjour,

    Citation Envoyé par anis978 Voir le message
    ... Je n'ai pas compris où se trouve l'erreur (system error divide by zero or overflow error)
    ... Et un lecteur a beaucoup de mal à comprendre la finalité du programme, faute de toute explication .
    Que voulais-tu faire ?

    Je remarquerai simplement que:
    a) la variable (e) doit être du type LongInt et contient le code d'erreur relatif à l'échec éventuel de l'instruction Val(Ch[ i], x, e);
    b) la division interdite par zéro intervient lors de l'appel de (i MOD s), ce qui implique que (s) reste nul, que son incrémentation
    ne s'est jamais réellement produite, et donc que l'incrément (x) est lui aussi toujours nul.

    Tu devrais par curiosité afficher le code d'erreur, et introduire une condition de poursuite du calcul, évitant ainsi le plantage du programme:
    Bien que la finalité du programme reste pour moi un sombre mystère , j'ai la vague impression que (i) devrait être borné inclusivement par 48 et 57 ...


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour wiwaxia Merci pour votre attention, t'as raison j'ai oublié d'expliquer le fonctionnement du programme ; voilà de quoi il s'agit :
    Un nombre Harshad est un entier qui est divisible par la somme de ses chiffres.
    Exemple : 198 est un nombre Harshad.
    En effet 198 est divisible par la somme de ses chiffres qui est 18 (1+9+8=18).

    Travail demandé :
    Écrire un programme Pascal qui permet de chercher et d’afficher tous les nombres Harshad de l’intervalle [n, m] (avec 100 <= n < m) et dont Ie prédécesseur de chacun est premier.

    N.B : On rappelle qu’un nombre est dit premier s’il est dlVisible uniquement par 1 et par lui-même. Par définition, 1 n’est pas considéré comme étant un nombre premier.
    J'ai essayé de changer le type de e de integer à longint mais Pascal ne l'a pas accepté, il m'a obligé à la déclarer comme type integer.
    J'ai essayé de changer un peu la structure du programme, l'erreur a disparu mais il y a encore un problème : le programme n'accomplit pas la tâche demandée par l'exercice ; il reste inactif.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    PROGRAM BAC2014 ;
    USES WINCRT ;
    VAR i,n,m:integer;
     
     procedure saisir(var n,m:integer);
     begin
       repeat
       writeln('ecrire l''entier n et m');
       readln(n,m);
       until ((n>=100)and(m>n));
     end;
     
     function harshad(m,n:integer):boolean; 
     var i,s,a,x,e:integer;
         ch:string;
         test1:boolean;
     begin
      for i:=n to m do
      begin
       s:=0;
       str(i,ch);
       for a:=1 to length(ch) do
        begin
        val(ch[i],x,e);
        s:=x+s;
        end;
    end;
    if i mod s=0 then 
    	test1:=true;
    harshad:=test1;
    end;
     
    function premier(m,n:integer):boolean; 
    var i,nb,b:integer;
    test3:boolean;
    begin
      for i:=n to m do
    begin 	
    b:=0;
       repeat 
         b:=b+1;
         test3:=(((i-1) mod b)=0); 
    until ((test3=false)or(b=i-1));
    end;
      premier:=test3;
     end;
     
     
    begin
    saisir(n,m);
    for i:=n to m do
      begin     
      if ((premier(m,n)=true) and (harshad(m,n)=true)) then
      writeln(i,'car',i,' est hashard et son predecesseur ',(i-1),'est un nombre premier') ;
     end;
    end.

  4. #4
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Erreur "system error divide by zero or overflow error"
    Voilà désormais un énoncé parfaitement clair, auquel ton programme principal répond dans sa structure; il n'y manque que l'indentation indispensable à la compréhension rapide du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BEGIN
      Saisir(n,m);
      FOR i:=n TO m DO
        BEGIN
          IF ((Premier(m,n)=true) AND (Harshad(m,n)=true)) THEN
            WriteLn(i,'car',i,' est hashard et son prédécesseur ',(i-1),'est un nombre premier') ;
        END
    END.
    L'usage des majuscules est souhaitable (malgré l'insensibilité du Pascal à la casse) en ce qu'il facilite la lecture du texte source; je m'en suis toujours tenu au style recommandé dans les premières bibles du Turbo Pascal éditées par Borland dans les années 80.

    Il ne reste donc qu'à examiner séparément les fonctions booléennes Premier(...) et Harshad(...).

    Questions générales:
    1°) Les entiers négatifs apparaissent-ils dans les calculs ? Non, probablement, ce qui autorise l'intervention de variables au format Word et double l'étendue du domaine des entiers naturels (MaxWord = 216 - 1 = 65535).

    2°) Il s'agit de détecter au cours d'une énumération tous les couples d'entiers successifs (i - 1 , i) tels que le plus petit soit premier, et son suivant hashard: le coeur de ton programme ne devrait-il pas présenter une structure apparentée à ce qui suit ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      FOR i:=n TO m DO
        BEGIN
          IF ((Premier(i - 1)=true) AND (Harshad(i)=true)) THEN
            WriteLn(i,'car',i,' est hashard et son prédécesseur ',(i-1),'est un nombre premier') ;
        END
    Chacune des fonctions booléennes ne devrait dépendre que de l'indice courant (i).

    3°) L'expression booléenne (Test = True) n'est-elle pas identiquement équivalente à (Test) ? L'instruction conditionnelle précédente peut donc être abrégée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (Premier(i - 1) AND Harshad(i)) THEN ...
    ou si l'on veut se conformer aux exigences des plus maniaques (dont je fais partie):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      VAR TestP, TestH: Boolean;
     ... / ...
        TestP:= Premier(i - 1); TestH:= Harshad(i);
        IF (TestP AND TestH) THEN ...
    On pourra ensuite passer au contenu de ces fonctions.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bonjour,
    Citation Envoyé par anis978 Voir le message
    N.B : On rappelle qu’un nombre est dit prcmier s’il est dlVisible uniquement par 1 et par
    lui-meme. Par définition, 1 n’est pas considéré comme étant un nombre premier.
    Non !!

    La définition est : Un nombre premier a 2 diviseurs. Ce que tu donnes comme définition n'est en fait qu'une conséquence.

    Et comme 1 n'a qu'un diviseur, il n'est pas premier, et on n'a donc pas de raison de préciser Par définition, 1 n’est pas considéré comme étant un nombre premier..

    Ça finit par me fatiguer d'avoir à préciser ce genre de truc élémentaire
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Erreur "system error divide by zero or overflow error"
    La mise au point militante qui vient d'être faite me fait songer songer au pugilat survenu entre deux manifestants, dont d'un était contre la guerre, et l'autre pour la paix

    La définition donnée a l'incontestable mérite de la concision, mais n'empêche pas la subsistance de sa version traditionnelle, même sur des sites qui n'ont pas la réputation d'être tenus par des demeurés :
    1_ A prime number (or prime integer, often simply called a "prime" for short) is a positive integer p>1 that has no positive integer divisors other than 1 and p itself.
    More concisely, a prime number p is a positive integer having exactly one positive divisor other than 1, meaning it is a number that cannot be factored.

    2_ A number n is prime if it is greater than 1 and has no positive divisors except 1 and n.
    A natural number is prime if and only if it has exactly two (positive) divisors.

    anis978 a suffisamment de pain sur la planche pour qu'on ne lui conteste pas une définition reçue de l'un de ses professeurs, et dépourvue de toute incidence sur l'algorithme en chantier .


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  7. #7
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Erreur "system error divide by zero or overflow error"
    @ anis978, justement: un détail qui m'avait échappé m'inquiète un peu:

    Citation Envoyé par anis978 Voir le message
    ... J'ai essayé de changer le type de (e) de Integer à LongInt mais Pascal ne l'as pas accepté, il m'a obligé de la déclarer comme type Integer ...
    Quelle version du Turbo Pascal utilises-tu ? Je crois me rappeler que la version 5.5 n'acceptait pas les entiers longs ...
    De plus, faut-il vraiment que tu utilises WinCrt ?

    Si ce n'est fait il serait bon, à brève échéance, que tu installes TP7 (téléchargeable sur Developpez.com, un excellent site pour Développeurs-Programmeurs Pro(1)).
    Soit dit pour te rassurer, le présent programme est réalisable sur une version ancienne.

    (1)Publicité entièrement objective et désintéressée.

    # PS: Il faut vraiment indenter le code source (à défaut d'user de majuscules) afin de ne pas braquer les intervenants, dont l'irritation est légitime

    @ Jipété Pas de panique, on examinera les fonctions séparément.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bonjour,
    Citation Envoyé par wiwaxia Voir le message
    La mise au point militante qui vient d'être faite me fait songer songer au pugilat survenu entre deux manifestants, dont d'un était contre la guerre, et l'autre pour la paix

    La définition donnée a l'incontestable mérite de la concision, mais n'empêche pas la subsistance de sa version traditionnelle, même sur des sites qui n'ont pas la réputation d'être tenus par des demeurés :
    1_ A prime number (or prime integer, often simply called a "prime" for short) is a positive integer p>1 that has no positive integer divisors other than 1 and p itself.
    More concisely, a prime number p is a positive integer having exactly one positive divisor other than 1, meaning it is a number that cannot be factored.

    2_ A number n is prime if it is greater than 1 and has no positive divisors except 1 and n.
    A natural number is prime if and only if it has exactly two (positive) divisors.

    anis978 a suffisamment de pain sur la planche pour qu'on ne lui conteste pas une définition reçue de l'un de ses professeurs, et dépourvue de toute incidence sur l'algorithme en chantier .
    Désolé pour toi, mais la définition que je donne est pour le moins plus "traditionnelle" que tes sites, c'est tout simplement celle d'EUCLIDE !!

    Il faut arrêter de prendre internet comme si c'était une référence absolue.
    Si les cons volaient, il ferait nuit à midi.

  9. #9
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Tu m'offres une salutaire occasion de me rafraîchir la mémoire

    # Arnaudiès & Fraysse _ Algèbre (Dunod Université , 1990) p 139
    On appelle nombre premier tout entier naturel p >= 2 dont les seuls diviseurs dans N sont 1 et p .

    ... et comme je ne saurais résister longtemps aux charmes vénéneux de la Toile
    # What is the smallest prime ?
    Nom : Euclide_01.png
Affichages : 673
Taille : 61,6 Ko

    Pour la consultation directe des textes originaux, ce n'est guère possible à l'heure qu'il est, mais éventuellement envisageable.

    Ceci dit, je n'ai aucune envie de poursuivre la controverse.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  10. #10
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    Salut

    Pour Euclide voir ici.
    Sinon depuis le début vous êtes d'accord, le 1 ne fait pas partie des nombres premiers - vous l'exprimez simplement différement.
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  11. #11
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut
    Je n'avais pas songé à me connecter à la BNF

    Nom : Eléments 7_11.png
Affichages : 551
Taille : 79,0 Ko
    "Nombre premier est celui qui est mesuré par la seule unité"
    La traduction correspond à ce qui est rapporté dans le document précédent.

    Soit en langage contemporain: un seul diviseur. CQFD.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  12. #12
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Erreur "system error divide by zero or overflow error"
    @ anis978 J'ai repris le sujet de ton problème, et viens de m'apercevoir qu'il a fait l'objet d'un débat sur ce même forum il y a un peu plus de 3 ans.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  13. #13
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 719
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 719
    Points : 15 105
    Points
    15 105
    Par défaut
    Citation Envoyé par wiwaxia Voir le message
    @ anis978 J'ai repris le sujet de ton problème, et viens de m'apercevoir qu'il a fait l'objet d'un débat sur ce même forum il y a un peu plus de 3 ans.
    Quoi ?
    Tu voudrais que les gens, à notre époque, fassent l'effort de chercher ?


    Citation Envoyé par wiwaxia Voir le message
    "Nombre premier est celui qui est mesuré par la seule unité"
    La traduction correspond à ce qui est rapporté dans le document précédent.

    Soit en langage contemporain: un seul diviseur. CQFD.
    Pas d'accord, mais alors, pas d'accord du tout ! T'en as oublié un bout :

    Nom : par_soimeme_et_lunité.png
Affichages : 565
Taille : 3,2 Ko

    par soi-même et l'unité, en français de 2018 , commentaire en gras de votre serviteur.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #14
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Rendons à Euclide ce qui est à Euclide
    1°)
    Citation Envoyé par Jipété Voir le message
    Quoi ? Tu voudrais que les gens, à notre époque, fassent l'effort de chercher ?
    Ben oui, j'y crois toujours. Il ne faut pas sous-estimer les internautes.

    2°)
    Citation Envoyé par Jipété Voir le message
    2°) Pas d'accord, mais alors, pas d'accord du tout ! T'en as oublié un bout :
    ... / ...
    par soi-même et l'unité, en français de 2018 , commentaire en gras de votre serviteur.
    Il faut bien discerner la version d'origine d'un texte vieux de vingt-trois siècles, et ne pas la confondre avec les commentaires du traducteur, imprimés il y a seulement 386 ans (avec privilège du Roi ).

    Là, je suis contraint de reprendre plus tard.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  15. #15
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Suggestions de lecture au coin du feu
    Extrait d'une édition trilingue (grec, latin & français) et plus récente (1814) des oeuvres d'Euclide, disponible sur le site de la Bibliothèque de l'Université de Toronto:
    les 23 définitions par lesquelles s'ouvre le septième livre (pages 381 à 384).

    Ceux qui se méfient à bon droit d'Internet peuvent aller consulter sur place (prévoir un équipement chaud et les chiens de traîneau).

    Nom : L_VII_Définitions 1~3 p_381.png
Affichages : 509
Taille : 116,6 Ko
    Nom : L_VII_Définitions 4~12 p_382.png
Affichages : 539
Taille : 135,6 Ko
    Nom : L_VII_Définitions 13~23 p_383-384.png
Affichages : 589
Taille : 123,3 Ko


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  16. #16
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Suggestion de lectures prolongées au coin d'un bon feu
    Pour les auteurs anciens, l'unité (monade) se distingue de la multitude, représentée par les nombres.
    L'unité n'étant pas considérée comme un nombre, la question de sa primalité ne se pose pas.

    D'autre part un nombre (a) en mesure un autre plus grand (b) si celui-ci peut être décomposé en plusieurs parties égales, de valeur commune (a): l'égalité supposant la comparaison d'au moins deux termes, le diviseur (a) est nécessairement inférieur au dividende (b); ainsi, selon cette définition, la division d'un nombre par lui-même n'a aucun sens, et un nombre n'est pas inclus dans la liste de ses diviseurs.
    Voilà la réponse stricte au différent qui est apparu.

    Les successeurs, traducteurs et commentateurs d'Euclide ont varié sur ce point. Je ne saurais mieux faire que de vous renvoyer à l'article déjà cité (#9)(1).

    (1) Un intervenant n'a-t-il pas récemment stigmatisé ceux qui ne se donnent pas la peine de chercher ?


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  17. #17
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Revenons (enfin) à nos moutons
    Il m'était apparu très vite que le recours aux instructions (. DIV 10) et (. MOD 10) fournissait le moyen le plus simple de caractériser les nombres Harshad, comme un intervenant l'avait déjà remarqué à la fin du forum déjà mentionné.

    Une fonction booléenne peut fournir directement la réponse, sans qu'il soit nécessaire de passer par la somme explicite des chiffres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     ... / ...
       VAR r, s: Byte; p, q: LongInt;
       BEGIN
         s:= 0; p:= k;
         WHILE (p>0) DO BEGIN
                          q:= p DIV Base; r:= p MOD Base;
                          Inc(s, r);      p:= q
                        END;
         r:= k MOD s; T_Harshad:= (r=0)
     ... / ...
    Les entiers recherchés ne sont pas rares, mais leur répartition paraît très irrégulière; il n'y a pas (ou du moins je n'ai pas vu) de critère de présélection permettant d'accélérer l'inventaire. Il faut donc tester tous les entiers présents dans l'intervalle imposé; exemples trouvés (presque) au hasard:

    Nom : 112_Suite H_0102.png
Affichages : 463
Taille : 40,5 Ko

    Il en va tout autrement de la recherche des couples associant un nombre Harshad à son prédécesseur premier, parce que celui-ci est d'un type facile à caractériser: tous les nombres premiers (p) supérieurs à 3 vérifient en effet:
    p MOD 6 = 1 ou 5
    condition permettant une énumération trois fois plus rapide par quelques instructions du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    REPEAT ... / ...
      Inc(k, Delta); Delta:= 6 - Delta
    UNTIL ...
    Le seul point délicat est la détermination du premier entier à tester (N1) et de l'incrément correspondant (Delta = Dn), qui suit immédiatement la saisie de la valeur de départ (Nini = p):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     ... / ...
         q:= p DIV 6; r:= p MOD 6; s:= 6 * q;
         IF (r<2) THEN BEGIN
                         N1:= s + 1; Dn:= 4
                       END
                  ELSE BEGIN
                         N1:= s + 5; Dn:= 2
                       END;     ... / ...
    L'exclusion de la divisibilité par (2) ou par (3) autorise un test de primalité simplifié apparenté au précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     FUNCTION T_Primalite(k: LongInt): Boolean;
       VAR p, q, r: LongInt; Q2: Extended;
       BEGIN
         q:= 1; p:= 4;
         REPEAT
           Inc(q, p); p:= 6 - p; r:= k MOD q; Q2:= Sqr(1.0 * q)
         UNTIL ((Q2>k) OR (r=0));
         T_Primalite:= (r>0)
       END;
    et dont le seul défaut est de ne donner une réponse correcte qu'à partir de (6) - pour une raison évidente; il suffit de modifier la condition d'arrêt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T_Primalite:= ((r>0) OR (k=5))
    pour obtenir un fonctionnement correct dans le cas où (k = 5) .

    Voici ce que l'on obtient pour les paires d'entiers (k, k + 1) au format LongInt, des plus petits aux plus grands:

    Nom : 134_SuitePH_Min_Max.png
Affichages : 547
Taille : 36,8 Ko

    La recherche des triplets résultant de l'encadrement d'un nombre premier (k) par deux nombres de Harshad (k - 1 , k + 1) relève du même type d'algorithme; celle des premiers jumeaux (6*m - 1 , 6*m + 1) bordant un nombre de Harshad (6*m) fait appel à un procédé un peu différent, mais dépourvu de difficultés:

    Nom : 156_Suite HPH_PHP_max.png
Affichages : 523
Taille : 70,3 Ko


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

Discussions similaires

  1. [2012] Divide by zero error encountered.
    Par soannilan dans le forum Développement
    Réponses: 2
    Dernier message: 08/06/2017, 13h05
  2. erreur system error: 111
    Par nicolasSENAME dans le forum MySQL
    Réponses: 2
    Dernier message: 21/12/2009, 08h58
  3. Erreur système . Code : 1410 ?
    Par Interruption13h dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/05/2006, 08h59
  4. Erreur systeme
    Par toxyko dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/03/2006, 15h51
  5. [VB.NET] Erreur System.InvalidCastException
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 5
    Dernier message: 28/09/2004, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo