GAMOPAT
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

les nombres premiers en 8 lignes

+3
Urbinou
VieuxBouz1
sidchip_fr
7 participants

Aller en bas

les nombres premiers en 8 lignes Empty les nombres premiers en 8 lignes

Message par sidchip_fr Lun 19 Juin 2023 - 23:04

Pour ceux qui ont des souvenirs de leurs cours de math du collège et lycée,voici un petit programme en 8 lignes qui calcule tous les nombres premiers (nombre qui n'a comme diviseurs que 1 ou lui-même)
Le programme n'est pas spécifique au C64 on peut donc l'adapter pour n'importe quel micro en basic.
Ce n'est peut-être pas la façon la plus élégante de faire mais le programme fonctionne :

10 PRINT1;2;3;5;7;
20 N=8:D=2
30 I=N/D
40 IFI=INT(I)THENN=N+1:D=2:GOTO30
50 D=D+1
60 IFD>N/2THEN80
70 GOTO30
80 PRINTN;:N=N+1:D=2:GOTO30

Note : l'affichage des nombres ralentit au fur et à mesure car il faut tester tous les diviseurs
(ou plus exactement tous les diviseurs jusqu'à la moitié du nombre,puisque au dessus de la moitié il ne peut y avoir de diviseur)

autre programme avec test uniquement des nombres impairs :

10 PRINT1;2;3;5;7;
20 N=9:D=3
30 I=N/D
40 IFI=INT(I)THENN=N+2:D=3:GOTO30
50 D=D+1
60 IFD>N/2THEN80
70 GOTO30
80 PRINTN;:N=N+2:D=3:GOTO30


Dernière édition par sidchip_fr le Jeu 13 Juil 2023 - 15:04, édité 1 fois
avatar
sidchip_fr
Patient contaminé

Masculin Nombre de messages : 380
Age : 52
Date d'inscription : 25/05/2008

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par VieuxBouz1 Lun 19 Juin 2023 - 23:14

Excellent 👍
VieuxBouz1
VieuxBouz1
Patient contaminé

Masculin Nombre de messages : 897
Age : 52
Localisation : Somewhere in Britany
Date d'inscription : 25/02/2023

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par sidchip_fr Lun 19 Juin 2023 - 23:17

VieuxBouz1 a écrit:Excellent 👍

Merci à toi,c'est sympa  Very Happy
avatar
sidchip_fr
Patient contaminé

Masculin Nombre de messages : 380
Age : 52
Date d'inscription : 25/05/2008

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par Urbinou Mar 20 Juin 2023 - 23:42

Pour accélérer, tu pourrais te limiter aux nombres impairs, à l’exception de 2, un nombre pair ne sera jamais premier.
Urbinou
Urbinou
Docteur agrégé **
Docteur agrégé **

Masculin Nombre de messages : 12632
Age : 55
Localisation : Liège, Belgique
Date d'inscription : 12/02/2013

http://cambouisdelatari.wordpress.com

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par lincruste Mer 21 Juin 2023 - 1:03

Ha ouais tiens ça existe le modulo en basic sur c64 ?
lincruste
lincruste
Interne
Interne

Masculin Nombre de messages : 5607
Age : 44
Localisation : RP
Date d'inscription : 07/06/2014

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par sidchip_fr Mer 21 Juin 2023 - 2:02

Urbinou a écrit:Pour accélérer, tu pourrais te limiter aux nombres impairs, à l’exception de 2, un nombre pair ne sera jamais premier.

c'est ce que teste le programme en premier : si le nombre est divisible par 2,il est pair et donc l'ordinateur passe au nombre suivant
avatar
sidchip_fr
Patient contaminé

Masculin Nombre de messages : 380
Age : 52
Date d'inscription : 25/05/2008

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par sidchip_fr Mer 21 Juin 2023 - 2:04

lincruste a écrit:Ha ouais tiens ça existe le modulo en basic sur c64 ?

à ma connaissance la fonction modulo n'existe pas dans le basic V2 du C64
avatar
sidchip_fr
Patient contaminé

Masculin Nombre de messages : 380
Age : 52
Date d'inscription : 25/05/2008

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par suisseretrogaming Mer 21 Juin 2023 - 7:18

Pour savoir plus efficacement si un nombre est pair (ou impair), il suffit de checker le dernier bit de poids faible. Bit à 0 c'est pair, bit a 1 c'est impair.

Ou mieux encore, ta boucle qui itère chaque nombre, au lieu incrémenter +1, tu devrais plutôt partit d'un nombre impair comme 9,.et incrémenter de +2.
Ainsi ta boucle ne testera que les nombres impairs. 9, 11, 13,...

Et si je me trompe pas en lisant le code, tu teste de diviser par tous les nombres précédents (enfin disons plutôt par la moitié des nombres). 
Tu devrais plutôt tester de diviser uniquement par les nombres premiers trouvés précédemment. Si le nombre n'est jamais divisible, c'est qu'il est premier lui aussi.
avatar
suisseretrogaming
Infirmier

Masculin Nombre de messages : 3845
Age : 33
Localisation : Suisse
Date d'inscription : 14/09/2013

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par Copper Mer 21 Juin 2023 - 9:22

Après 1 n'est pas considéré comme un nombre premier...
Copper
Copper
Docteur *
Docteur *

Masculin Nombre de messages : 7401
Age : 47
Localisation : FRANCE
Date d'inscription : 02/11/2020

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par lincruste Mer 21 Juin 2023 - 23:08

sidchip_fr a écrit:
lincruste a écrit:Ha ouais tiens ça existe le modulo en basic sur c64 ?

à ma connaissance la fonction modulo n'existe pas dans le basic V2 du C64

Ho ok merci. Et ça marche comment avec ton INT sur un micro 8 bits ? T'es limité à un entier qui vaut 255 ou 32768 ou encore une autre valeur avec ton programme ou bien ça peut continuer autant qu'on veut ?
lincruste
lincruste
Interne
Interne

Masculin Nombre de messages : 5607
Age : 44
Localisation : RP
Date d'inscription : 07/06/2014

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par sidchip_fr Mer 21 Juin 2023 - 23:23

lincruste a écrit:
sidchip_fr a écrit:
lincruste a écrit:Ha ouais tiens ça existe le modulo en basic sur c64 ?

à ma connaissance la fonction modulo n'existe pas dans le basic V2 du C64

Ho ok merci. Et ça marche comment avec ton INT sur un micro 8 bits ? T'es limité à un entier qui vaut 255 ou 32768 ou encore une autre valeur avec ton programme ou bien ça peut continuer autant qu'on veut ?

INT renvoie la partie entière d'un nombre.J'ai fait quelques tests sous Winvice et apparemment il n'y a pas de limite (pas de problème pour les chiffres supérieurs à 32768)
avatar
sidchip_fr
Patient contaminé

Masculin Nombre de messages : 380
Age : 52
Date d'inscription : 25/05/2008

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par lincruste Mer 21 Juin 2023 - 23:28

Pas mal du tout. Et tu l'as fait tourner jusqu'à combien et en combien de temps pour avoir une idée ?
lincruste
lincruste
Interne
Interne

Masculin Nombre de messages : 5607
Age : 44
Localisation : RP
Date d'inscription : 07/06/2014

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par sidchip_fr Mer 21 Juin 2023 - 23:36

lincruste a écrit:Pas mal du tout. Et tu l'as fait tourner jusqu'à combien et en combien de temps pour avoir une idée ?

Je n'ai pas fait tourner le programme pour répondre à ta question.J'ai juste fait calculer à l'ordinateur un très grand chiffre à virgule avec la fonction INT et il me l'a calculée sans problème (pas de message d'erreur).Par conséquent on peut faire tourner le programme autant de temps qu'on veut ça ne plantera pas.
avatar
sidchip_fr
Patient contaminé

Masculin Nombre de messages : 380
Age : 52
Date d'inscription : 25/05/2008

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par sidchip_fr Jeu 13 Juil 2023 - 15:07

Salut à tous,

J'ai rajouté le programme qui teste uniquement les nombres impairs comme vous me l'avez suggéré.ça fonctionne très bien aussi.J'ai quand même laissé le premier programme avec le test de tous les nombres (pairs et impairs) car j'aime bien l'idée que les nombres soient tous testés (c'est juste une question de goût évidemment)

Je vous remercie à tous pour votre contribution.
avatar
sidchip_fr
Patient contaminé

Masculin Nombre de messages : 380
Age : 52
Date d'inscription : 25/05/2008

Revenir en haut Aller en bas

les nombres premiers en 8 lignes Empty Re: les nombres premiers en 8 lignes

Message par Putois Blagueur Mar 1 Aoû 2023 - 19:57

Il y a une trentaine d'année, j'avais un programme comme celui-ci en basic sur ma sharp pc 1401.
ça ramait à mort au bout de 2 minutes!
Putois Blagueur
Putois Blagueur
Patient incurable

Masculin Nombre de messages : 1630
Age : 47
Localisation : Entre Vénus et Mars
Date d'inscription : 10/02/2016

sidchip_fr offre 1 suppo à ce post!

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum