Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#51 01-02-2020 18:23:08

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Divisibilité des nombres impairs

Bonjour,


Merci de cette confirmation.
172 chiffres pour les entiers Python est une rigolade...
Et avant de poster, nb étant mon nombre de 172 chiffres, j'avais vérifié que nb%41=0...
Donc, j'étais sûr de moi.
Windev est capable, en natif, de traiter des nombres de 172 chiffres ou as-tu dû contourner la limitation ? Parce que toutes les docs internet consultées donne comme limite $2^{64}-1$... Alors ?

Pour, ton nombre, mon script me renvoie :

Le nombre :
5647896514257965387540502589630475126895511427963148873628942796568924568147569863587441779159456852547895625456874777933520058501456905784036950245612475685412358456325149
             est-il divisible par 41 ?

Découpe du nombre par tranches de 5 chiffres à partir des unités :
56 47896 51425 79653 87540 50258 96304 75126 89551 14279 63148 87362 89427 96568 92456 81475
   69863 58744 17791 59456 85254 78956 25456 87477 79335 20058 50145 69057 84036 95024 56124
   75685 41235 84563 25149
   

La somme des nombres ainsi formés est :
                  2265932
qu'on ramène préalablement à 5 chiffres puis qu'on traite par la méthode classique :
22 + 65932 = 65954
6595 (4) - 4 x 4
657 (9) - 9 x 4
62 (1) - 1 x 4
5 (8) - 8 x 4
Non, le nombre n'est pas divisible par 41

Si j'interroge Python directement ;

>>> nb=5647896514257965387540502589630475126895511427963148873628942796568924568147569863587441779159456852547895625456874777933520058501456905784036950245612475685412358456325149
>>> nb%41
26

Nouvel essai avec nb-26.
Python directement :

>>> nb-=26
>>> nb%41
0

Mon script :

Le nombre :
5647896514257965387540502589630475126895511427963148873628942796568924568147569863587441779159456852547895625456874777933520058501456905784036950245612475685412358456325123
             est-il divisible par 41 ?

Découpe du nombre par tranches de 5 chiffres à partir des unités :
56 47896 51425 79653 87540 50258 96304 75126 89551 14279 63148 87362 89427 96568 92456 81475
   69863 58744 17791 59456 85254 78956 25456 87477 79335 20058 50145 69057 84036 95024 56124
   75685 41235 84563 25123
   

La somme des nombres ainsi formés est :
                  2265906
qu'on ramène préalablement à 5 chiffres puis qu'on traite par la méthode classique :
22 + 65906 = 65928
6592 (8) - 8 x 4
656 (0) - 0 x 4
65 (6) - 6 x 4
4 (1) - 1 x 4
Oui, le nombre est divisible par 41


Au passage, je ne peux pas te laisser écrire ça :
16646 - 6 x  4 = 24
Cette écriture est une hérésie (je sais ce que tu as pensé), écris plutôt, au pire 16646 - 6 x  4 (24)

Le nombre :
5647896514257965387540502589630475126895511427963148873628942796568924568147569863587441779159456852547895625456874777933520058501456905784036950245612475685412358456325123
             est-il divisible par 41 ?

Découpe du nombre par tranches de 5 chiffres à partir des unités :
56 47896 51425 79653 87540 50258 96304 75126 89551 14279 63148 87362 89427 96568 92456 81475
   69863 58744 17791 59456 85254 78956 25456 87477 79335 20058 50145 69057 84036 95024 56124
   75685 41235 84563 25123
   

La somme des nombres ainsi formés est :
                  2265906
qu'on ramène préalablement à 5 chiffres puis qu'on traite par la méthode classique :
22 + 65906 = 65928
6592 (8) - 8 x 4
656 (0) - 0 x 4
65 (6) - 6 x 4
4 (1) - 1 x 4
Oui, le nombre est divisible par 41

L'avantage de mon script est que tu peux refaire les calculs à la main sans fatigue



@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#52 01-02-2020 18:26:28

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Divisibilité des nombres impairs

Ave LEG,

Ton nombre est congru à 27 modulo 41...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#53 01-02-2020 18:53:44

Omhaf
Membre
Inscription : 16-01-2020
Messages : 225

Re : Divisibilité des nombres impairs

Re yoshi,
effectivement , j'ai contourné la question numérique par l'usage de chaines
instructions : numérique vers chaîne  et  val(chaîne)
maintenant je peux prétendre être en mesure de traiter des nombres bien supérieurs à 172 chiffres  puisque cela se réduit à un compteur mesurant la longueur de la chaîne
Le traitement est effectué sur un bloc de 10 caractères transformés en nombres puis recollés en tant que chaîne après calcul et re-belote jusqu'à la fin du compteur
Si tu travaille sous windev je te passe le code.

Hors ligne

#54 01-02-2020 19:20:03

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Divisibilité des nombres impairs

RE,

J'ai décidé de tester nb10--> 1713 chiffres (nb : mon nombre de 172 chiffres)
L'affichage démarre illico (et là, le tien ne suivra plus...), pas de délai d'attente jusqu'à la fin...

Le nombre :
166199082927508543216750069411023241377525652924108578756376295047524001346042324207009544466477663194286264686972410339048622053127096703353020959297252673771259149419137106675749514085081550628654291631749548136301720297666500073075575924377733234172926150641972711388453166825254219322178368674514711366977587229421166231609259485474012061213597857872503818470879082685951552154951023204826482491796793403827930442603610655927723524640187659666162606739311993630061489191427932526816986559103651491479767758701268516069056569949832577600878070882289142579363096712518230358118563048335058536387501208236158499902231231884952722175899643979658537936934154021016039478107479075799584008754178167832937816804782419389317354064196214468148604355837464335787350167393683192686836573825229552036370799839688038782597729495128806895103327566169322772808254696727685027718223865327857983419989350124323406987443067315797885410093164671787645659574102475147051322016220274249298682648850368291820673218454579773087592270558121192009741777813401871224336551162121368706885381881921712826532700956926536338273581915674398790086243495002252666316905685194995516963178729356589403124563403551047062918585126195662601829001247440856091268585504674721811788342985000663689320603468194998499056891756419921195983010317536468210871375197150368119280010516515910752670377283847053633372152464552175545748328446142503152684061429849044213637929392624844488540278925902268782415220499231452314323294861838197462912843873852783614445065797890661252567405766338342788187675358930064783128149673936351364554589189436295299384315621867110447553621206382613202612386362762642982216417584999669510955656633108153213813003999025444741201
             est-il divisible par 41 ?

Découpe du nombre par tranches de 5 chiffres à partir des unités :
166 19908 29275 08543 21675 00694 11023 24137 75256 52924 10857 87563 76295 04752 40013 46042
      32420 70095 44466 47766 31942 86264 68697 24103 39048 62205 31270 96703 35302 09592 97252
      67377 12591 49419 13710 66757 49514 08508 15506 28654 29163 17495 48136 30172 02976 66500
      07307 55759 24377 73323 41729 26150 64197 27113 88453 16682 52542 19322 17836 86745 14711
      36697 75872 29421 16623 16092 59485 47401 20612 13597 85787 25038 18470 87908 26859 51552
      15495 10232 04826 48249 17967 93403 82793 04426 03610 65592 77235 24640 18765 96661 62606
      73931 19936 30061 48919 14279 32526 81698 65591 03651 49147 97677 58701 26851 60690 56569
      94983 25776 00878 07088 22891 42579 36309 67125 18230 35811 85630 48335 05853 63875 01208
      23615 84999 02231 23188 49527 22175 89964 39796 58537 93693 41540 21016 03947 81074 79075
      79958 40087 54178 16783 29378 16804 78241 93893 17354 06419 62144 68148 60435 58374 64335
      78735 01673 93683 19268 68365 73825 22955 20363 70799 83968 80387 82597 72949 51288 06895
      10332 75661 69322 77280 82546 96727 68502 77182 23865 32785 79834 19989 35012 43234 06987
      44306 73157 97885 41009 31646 71787 64565 95741 02475 14705 13220 16220 27424 92986 82648
      85036 82918 20673 21845 45797 73087 59227 05581 21192 00974 17778 13401 87122 43365 51162
      12136 87068 85381 88192 17128 26532 70095 69265 36338 27358 19156 74398 79008 62434 95002
      25266 63169 05685 19499 55169 63178 72935 65894 03124 56340 35510 47062 91858 51261 95662
      60182 90012 47440 85609 12685 85504 67472 18117 88342 98500 06636 89320 60346 81949 98499
      05689 17564 19921 19598 30103 17536 46821 08713 75197 15036 81192 80010 51651 59107 52670
      37728 38470 53633 37215 24645 52175 54574 83284 46142 50315 26840 61429 84904 42136 37929
      39262 48444 88540 27892 59022 68782 41522 04992 31452 31432 32948 61838 19746 29128 43873
      85278 36144 45065 79789 06612 52567 40576 63383 42788 18767 53589 30064 78312 81496 73936
      35136 45545 89189 43629 52993 84315 62186 71104 47553 62120 63826 13202 61238 63627 62642
      98221 64175 84999 66951 09556 56633 10815 32138 13003 99902 54447 41201
   

La somme des nombres ainsi formés est :
                  16222060
qu'on ramène préalablement à 5 chiffres puis qu'on traite par la méthode classique :
162 + 22060 = 22222
2222 (2) - 2 x 4
221 (4) - 4 x 4
20 (5) - 5 x 4
Oui, le nombre est divisible par 41

Non, je ne travaille pas avec Windev...

@+

Dernière modification par yoshi (01-02-2020 23:32:46)


Arx Tarpeia Capitoli proxima...

Hors ligne

#55 02-02-2020 10:57:56

LEG
Membre
Inscription : 19-09-2012
Messages : 694

Re : Divisibilité des nombres impairs

Ave @césar et omaf

Même si la méthode est amusante, je ne pense pas que l'on puisse l'utiliser dans la recherche d'un grand nombre premier....ni même d'un petit.... Je plaisante...

Hors ligne

#56 02-02-2020 11:29:01

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Divisibilité des nombres impairs

Ave Jules & Omahaf,

Voilà un code satisfaisant :

from textwrap import wrap

def divisibilty_41_prime(lg,n):
    r,total=lg%5,0
    deb,Rep_75=int(str(n)[:r]),wrap(str(n)[r:],75)
    Decoupe=[wrap(B,5) for B in Rep_75]            
    print("Découpe du nombre par tranches de 5 chiffres à partir des unités :")
    if r>0:
        print(deb,end=" ")
    total+=int(deb)
    for Ligne in Decoupe:
        for bloc in Ligne:
            print(bloc,end=" ")
            total+=int(bloc)
        print("\n"+" "*r,end=" ")  
    print("\n\nLa somme des nombres ainsi formés est :")
    print("                 ",total)
    print("qu'on ramène préalablement à 5 chiffres puis qu'on traite par la méthode classique :")
    return len(str(total)),total

def divisibility_P1_bis(d,nn):
    multiplicateur=d//10
    quotient=str(nn%10)
    while  nn>0:
        u=nn%10
        quotient= str(u)+quotient
        print(str(nn)[:-1]+" ("+str(u)+") -",u,"x",multiplicateur)
        nn=int(str(nn)[:-1])-u*multiplicateur
    return nn
       
d=41        
nb=1667488557061413209054394573972024105616733164965864626256603706268098180246561617212759870289981436810020072001478859690358093048731490464920972462087040456385051225337321
nb=nb**10
print ("                           Le nombre :\n",nb)
print ("             est-il divisible par 41 ?\n")
long=len(str(nb))
lg_reste,nombre_revu=divisibilty_41_prime(long,nb)
n=int(str(nombre_revu)[-5:])+int(str(nombre_revu)[:lg_reste-5])
print (str(nombre_revu)[:lg_reste-5],"+",str(nombre_revu)[-5:],"=",n)

result=divisibility_P1_bis(d,n)
if result==0:
    print(0)
    print("Oui, le nombre est divisible par 41")
else:
    print("Non, le nombre n'est pas divisible par 41")
 

Je l'ai grandement simplifié depuis hier et il a bien maigri...
Il manque une petite modif pour qu'il admette n'importe quel nombre : là si la somme des nombres par tranche de 5 dépasse 9 999 999 999 999, le résultat sera faux (probablement au delà de 100 000 chiffres... si la mémoire ne déborde pas avant.)

Dans mon Editeur Python, j'ai limité l'affichage à 16 blocs de 5 par ligne ou debut + 15 blocs de 5...
Pour ce faire, j'extrais en début de nombre, le nombre à r chiffres r étant le reste dans la division par 5 de la longueur dudit nombre.
Toutes les extractions sont réalisées à partir de chaînes, Python dispose d'outils puissants pour ce faire et notamment wrap que j'ai utilisé.
Cette extraction réalisée, je découpe la suite du nombre convertie en chaîne par paquets de 75 (stocké dans la liste Rep_75)
Et je vais créer ma découpe par lignes, stockée dans Decoupe une liste de listes (grosso modo un tableau à plusieurs dimensions) :
Le script parcourt chaque tranche de 75, et la découpe en une liste de blocs de 5...
L'intérêt de la fonction wrap est qu'elle gère seule le cas où la dernière ligne ne contiendrait pas 15 blocs de 5.
Cela fait,
J'affiche le debut (dans l'exemple 166), j'ajoute une espace j'incrémente la somme nommée total de cette valeur.
Puis avec deux boucles imbriquées, j'extrais d'abord chaque sous-liste nommée Ligne de la Decoupe, la liste de Lignes
Puis de chaque Ligne, j'extrais les blocs de 5, dont j'incrémente la somme total de la valeur, et je les affiche l'un après l'autre séparés par une espace.
A la fin du traitement de chaque Ligne, je retourne à ligne écran suivante, j'affiche le nombre d'espaces correspondant à r+1 pour qu'il y ait alignement vertical des blocs de 5.
Ce fut la partie la plus délicate de la chose !

Avantages du procédé :
- pas de gestion de compteurs de boucles
- les Lignes sont auto-gérées par Python, ainsi que le nombre de blocs de dernière ligne écran s'il n'y en a pas 15...
Je récupère la valeur de total et le nombre de chiffres de cette somme, je ramène ce nombre à un nombre de 5 chiffres que je traite dans une deuxième fonction.

Inconvénient de cette méthode Wikipedia : je ne connais pas le quotient...

@+

Dernière modification par yoshi (02-02-2020 12:03:08)


Arx Tarpeia Capitoli proxima...

Hors ligne

#57 02-02-2020 12:53:42

LEG
Membre
Inscription : 19-09-2012
Messages : 694

Re : Divisibilité des nombres impairs

re:@

Inconvénient de cette méthode Wikipedia : je ne connais pas le quotient...

je ne pense pas que cela ai un grand intérêt ...

Mais si on prend d > 41, par ex 103 il faut modifier le programme ?
ou simplement rentrer: d = 103, et

def divisibilty_103_prime(lg,n):

avec d'autre ligne à modifier...?

ainsi que pour d > à 5 chiffres..?

Ou encore 41 modulo 30 : 71 , 101 ....etc pour rester avec d se terminant par 1 .

Dernière modification par LEG (02-02-2020 12:55:50)

Hors ligne

#58 02-02-2020 13:32:34

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Divisibilité des nombres impairs

Salut,

Jusqu'à maintenant, je m'étais focalisé sur 41...
La méthode Omahaf en principe doit fonctionner pour tout diviseur terminé par 1.
Il est clair que divisibility_41_prime ne marche qu'avec 41...
Par contre :
La seule deuxième fonction (non retouchée) donne la divisibilité pour tout diviseur terminé par 1 (testé avec 11, 31, 41, 71, 101,131):

def divisibility_P1_bis(d,nn):
    multiplicateur=d//10
    quotient=str(nn%10)
    while  nn>0:
        u=nn%10
        quotient= str(u)+quotient
        print(str(nn)[:-1]+" ("+str(u)+") -",u,"x",multiplicateur)
        nn=int(str(nn)[:-1])-u*multiplicateur
    return nn

####################

d,n=131,186131477257680071316285532633

####################

result=divisibility_P1_bis(d,n)
if result==0:
    print(0)
    print("Oui, le nombre est divisible par",d )
else:
    print("Non, le nombre n'est pas divisible par", d)

La première fonction ne marche en principe que pour 41 : elle est là, et c'est appréciable dans le cas des 1713 chiffres, pour éviter des lignes à répétition. Au delà de 72 chiffres, l'affichage n'est pas gérable par la méthode classique (sauf à n'afficher que la réponse)...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#59 02-02-2020 15:55:31

LEG
Membre
Inscription : 19-09-2012
Messages : 694

Re : Divisibilité des nombres impairs

moi cela ne marche qu'avec 41 , j'ai essayé avec 11 et 131 il y a erreur

voila le code en ayant modifié les ligne relatif à ton dernier post ci-dessus


from textwrap import wrap

def divisibilty_131_prime(lg,n):
    r,total=lg%5,0
    deb,Rep_75=int(str(n)[:r]),wrap(str(n)[r:],75)
    Decoupe=[wrap(B,5) for B in Rep_75]            
    print("Découpe du nombre par tranches de 5 chiffres à partir des unités :")
    if r>0:
        print(deb,end=" ")
    total+=int(deb)
    for Ligne in Decoupe:
        for bloc in Ligne:
            print(bloc,end=" ")
            total+=int(bloc)
        print("\n"+" "*r,end=" ")  
    print("\n\nLa somme des nombres ainsi formés est :")
    print("                 ",total)
    print("qu'on ramène préalablement à 5 chiffres puis qu'on traite par la méthode classique :")
    return len(str(total)),total

def divisibility_P1_bis(d,nn):
    multiplicateur=d//10
    quotient=str(nn%10)
    while  nn>0:
        u=nn%10
        quotient= str(u)+quotient
        print(str(nn)[:-1]+" ("+str(u)+") -",u,"x",multiplicateur)
        nn=int(str(nn)[:-1])-u*multiplicateur
    return nn
       
d,n=131        
nb=1667488557061413209054394573972024105616733164965864626256603706268098180246561617212759870289981436810020072001478859690358093048731490464920972462087040456385051225337321
nb=nb**10
print ("                           Le nombre :\n",nb)
print ("             est-il divisible par 131 ?\n")
long=len(str(nb))
lg_reste,nombre_revu=divisibilty_131_prime(long,nb)
n=int(str(nombre_revu)[-5:])+int(str(nombre_revu)[:lg_reste-5])
print (str(nombre_revu)[:lg_reste-5],"+",str(nombre_revu)[-5:],"=",n)

result=divisibility_P1_bis(d,n)
if result==0:
    print(0)
    print("Oui, le nombre est divisible par", d)
else:
    print("Non, le nombre n'est pas divisible par", d)
 

résultat:

Traceback (most recent call last):
  File "E:yoshi", line 31, in <module>
    d,n=131
TypeError: cannot unpack non-iterable int object

il n'accepte pas cette ligne :
d,n = 41, ou 131 , ou 111 etc
uniquement  avec :
d=41

Dernière modification par LEG (02-02-2020 16:01:35)

Hors ligne

#60 02-02-2020 16:02:19

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Divisibilité des nombres impairs

Normal, tu ne m'as pas lu correctement...


Arx Tarpeia Capitoli proxima...

Hors ligne

#61 02-02-2020 16:23:02

LEG
Membre
Inscription : 19-09-2012
Messages : 694

Re : Divisibilité des nombres impairs

mais si je t'ai lu correctement ...mais j'ai gardé toutes les fonction ......haaaaaaaaaaa.....ok j'ai compris @cesar....
d,n= 131 (le diviseur ) , 186131477257680071316285532633 le nombre n

je pensais que c'était 131, des décimales ....Lollllllllllll

résultat:


18613147725768007131628553263 (3) - 3 x 13
1861314772576800713162855322 (4) - 4 x 13
186131477257680071316285527 (0) - 0 x 13
18613147725768007131628552 (7) - 7 x 13
1861314772576800713162846 (1) - 1 x 13
186131477257680071316283 (3) - 3 x 13
18613147725768007131624 (4) - 4 x 13
1861314772576800713157 (2) - 2 x 13
186131477257680071313 (1) - 1 x 13
18613147725768007130 (0) - 0 x 13
1861314772576800713 (0) - 0 x 13
186131477257680071 (3) - 3 x 13
18613147725768003 (2) - 2 x 13
1861314772576797 (7) - 7 x 13
186131477257670 (6) - 6 x 13
18613147725759 (2) - 2 x 13
1861314772573 (3) - 3 x 13
186131477253 (4) - 4 x 13
18613147720 (1) - 1 x 13
1861314770 (7) - 7 x 13
186131467 (9) - 9 x 13
18613135 (0) - 0 x 13
1861313 (5) - 5 x 13
186124 (8) - 8 x 13
18602 (0) - 0 x 13
1860 (2) - 2 x 13
183 (4) - 4 x 13
13 (1) - 1 x 13
0
Oui, le nombre est divisible par 131
>>>

ce programme est plus simple et rapide...

Hors ligne

#62 02-02-2020 17:12:42

Omhaf
Membre
Inscription : 16-01-2020
Messages : 225

Re : Divisibilité des nombres impairs

Bonjour yoshi et LEG
yoshi, en attendans que je corrige mon bug, pourrais tu tester avec un impair par 7 sous python  stp ?
formule: P7  avec multiplicateur des unités =  P*3+2

Hors ligne

#63 02-02-2020 17:13:59

Omhaf
Membre
Inscription : 16-01-2020
Messages : 225

Re : Divisibilité des nombres impairs

par soustraction

Hors ligne

#64 02-02-2020 19:44:06

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Divisibilité des nombres impairs

Re,

@Omahaf

Je suis obligé de créer une fonction P7 supplémentaire.
Je veux tester la divisibilité de 2348298575476637473776107736639031859 par 37.
Je vais donc avoir une constante multiplicative valant 3 x 3 + 2= 11
Le 3, ici est le nombre de dizaines de 37...
Le chiffre des unités de 2348298575476637473776107736639031859 étant 9
j'effectue le calcul : 234829857547663747377610773663903185- 11 x 9 = 234829857547663747377610773663903086
N-B :
$2348298575476637473776107736639031859 \equiv 0\quad [37]$
$234829857547663747377610773663903086 \equiv 0\quad [37]$
Et maintenant je calcule :
23482985754766374737761077366390308 -11 x 6 = 23482985754766374737761077366390242
$23482985754766374737761077366390242 \equiv 0\quad [37]$

Ça se gâte quand j'arrive à 185...
185 =37 x 5... ok...
Mais, quand je poursuis :
18-11 x 5 =-37
Et mon script qui attendait 0 comme test de divisibilité me déclarait le nombre non divisible...
Donc j'ai dû corriger et remplacer le test de 0 :
if result==0:
par
if result % 37 ==0:
Il s'ensuit un affichage disgracieux sur lequel je vais devoir me pencher :

2348298575476637473776107736639031859
234829857547663747377610773663903185 (9) - 11 x 9
23482985754766374737761077366390308 (6) - 11 x 6
2348298575476637473776107736639024 (2) - 11 x 2
234829857547663747377610773663900 (2) - 11 x 2
23482985754766374737761077366387 (8) - 11 x 8
2348298575476637473776107736629 (9) - 11 x 9
234829857547663747377610773653 (0) - 11 x 0
23482985754766374737761077365 (3) - 11 x 3
2348298575476637473776107733 (2) - 11 x 2
234829857547663747377610771 (1) - 11 x 1
23482985754766374737761076 (0) - 11 x 0
2348298575476637473776107 (6) - 11 x 6
234829857547663747377604 (1) - 11 x 1
23482985754766374737759 (3) - 11 x 3
2348298575476637473772 (6) - 11 x 6
234829857547663747370 (6) - 11 x 6
23482985754766374730 (4) - 11 x 4
2348298575476637468 (6) - 11 x 6
234829857547663740 (2) - 11 x 2
23482985754766371 (8) - 11 x 8
2348298575476628 (3) - 11 x 3
234829857547659 (5) - 11 x 5
23482985754760 (4) - 11 x 4
2348298575471 (6) - 11 x 6
234829857540 (5) - 11 x 5
23482985748 (5) - 11 x 5
2348298569 (3) - 11 x 3
234829853 (6) - 11 x 6
23482978 (7) - 11 x 7
2348290 (1) - 11 x 1
234827 (9) - 11 x 9
23472 (8) - 11 x 8
2338 (4) - 11 x 4
229 (4) - 11 x 4
18 (5) - 11 x 5
0
Oui, le nombre est divisible par 37

@LEG...
Simple peut-être, mais fournis donc à la 2e fonction le nombre de 1713 chiffres et tu risques de ne pas être déçu du résultat...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#65 02-02-2020 21:20:49

Omhaf
Membre
Inscription : 16-01-2020
Messages : 225

Re : Divisibilité des nombres impairs

Re
à mon avis,il suffit d'ajuster la vérification sur la valeur absolue au lieu de la valeur relative (il y'a surement l'instruction équivalente dans python) sinon vérifier si le nombre est négatif, le multiplier par -1 puis tester et sortir de la boucle.
on a encore le P3 et le P9
P3 ===> P*3+1 (avec des additions)
P9===> P+1  (avec des additions)

Autre sujet: je voudrais connaitre ton avis sur ce que je fais à présent  :
as-tu déjà confectionné une routine pour générer les nombres premiers ?
je viens d'en écrire une qui consiste à (mis à part le le chiffre 2) à :
parcourir dans une  une boucle par pas de 2 à partir de  3 à  n   (3.......  i .......n)
vérifier si le i iéme nombre n'est pas divisible par la partie entière d'un des nombres premiers inférieurs à sa racine
si test positif
afficher nombre car premier
merci.

Hors ligne

#66 02-02-2020 21:23:51

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Divisibilité des nombres impairs

Re,

Oui, je dispose de plusieurs routines...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#67 03-02-2020 10:21:39

LEG
Membre
Inscription : 19-09-2012
Messages : 694

Re : Divisibilité des nombres impairs

Bonjour
je viens d'essayer avec ton nombre.

@LEG...
Simple peut-être, mais fournis donc à la 2e fonction le nombre de 1713 chiffres et tu risques de ne pas être déçu du résultat...

c'est un peu plus long de quelque secondes

la fin du résultat:

16619908292750854 (3) - 3 x 4
1661990829275084 (2) - 2 x 4
166199082927507 (6) - 6 x 4
16619908292748 (3) - 3 x 4
1661990829273 (6) - 6 x 4
166199082924 (9) - 9 x 4
16619908288 (8) - 8 x 4
1661990825 (6) - 6 x 4
166199080 (1) - 1 x 4
16619907 (6) - 6 x 4
1661988 (3) - 3 x 4
166197 (6) - 6 x 4
16617 (3) - 3 x 4
1660 (5) - 5 x 4
164 (0) - 0 x 4
16 (4) - 4 x 4
0
Oui, le nombre est divisible par 41
>>>

pour tester avec la deuxième fonction, le diviseur = 37 , ou + modulo 30...etc, il me suffit donc de changer les deux paramètres ,multiplicateur par la constante 11
et bien sût le paramètre résultat%37 ==0
je vais essayer ....

c'est ok, avec 37 mais pas avec 67...???
Car je suppose qu'avec d=67, la constante multiplicative est 20 : 3*6 + 2 = 20

Dernière modification par LEG (03-02-2020 10:54:25)

Hors ligne

#68 03-02-2020 13:46:36

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Divisibilité des nombres impairs

Re,


@LEG

def divisibility_P7(d,nn):
    multiplicateur=d//10
    quotient=str(nn%10)
    constante=multiplicateur*3+2
    print(nn)
    while nn>0:
        u=nn%10
        quotient= str(u)+quotient
        print(str(nn)[:-1]+"("+str(u)+") -",constante,"x",u)
        nn=nn//10-constante*u
    return nn
 

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#69 03-02-2020 15:25:16

Omhaf
Membre
Inscription : 16-01-2020
Messages : 225

Re : Divisibilité des nombres impairs

Bonjour
yoshi  avec python, tu peux confirmer avec ton nombre de 172 chiffres que les unités au niveau de chaque opération - mis côte à côte - constituent  le quotient ? (41 * quotient= nombre à 172 chiffres)
merci

Hors ligne

#70 03-02-2020 16:01:07

LEG
Membre
Inscription : 19-09-2012
Messages : 694

Re : Divisibilité des nombres impairs

@re Yoshi
ok j'ai fait la modif et j'ai aussi remplacé la ligne:

d,n=37,19540347972554525421063027269

##################################

result=divisibility_P7_bis(d,n)
if result%37==0:

par

result=divisibility_P7_bis(d,n)
if result%d==0:    ## comme ça je peux rentrer n'importe quel d terminant par 7

 

@omaf

(41 * quotient= nombre à 172 chiffres)

pourquoi ? si tu prends les dernières opérations.....etc  le quotient ne peut faire 172 chiffres , c'est bien le dividende non ?
Ou j'ai mal compris...?

Dernière modification par LEG (03-02-2020 16:02:17)

Hors ligne

#71 03-02-2020 17:04:51

Omhaf
Membre
Inscription : 16-01-2020
Messages : 225

Re : Divisibilité des nombres impairs

Re LEG
oui depuis le temps je confond un peu les termes je veux dire ceci
soit N= notre nombre à 172 chiffres qu'on divise par 41
N/41= R
le R est un quotient non ? et  j'ai pas dit qu'il se compose de 172 chiffres
pour moi dividende ou quotient c'est la même chose à moins qu'avec l'âge je commence à dire n'importe quoi :)

Hors ligne

#72 03-02-2020 17:15:49

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Divisibilité des nombres impairs

RE,


Non, ce n'est pas la même chose...
Avec ton exemple N est le dividende (le nombre qui est divisé), 41 est le diviseur (celui qui divise) et R est le quotient
Division euclidienne....
Dividende = diviseur x quotient + reste  et reste < diviseur
En abrégé : D =dq+r et r<d
Voilà pourquoi, moi qui ai enseigné ce B-A-BA pendant 38 ans, je m'arrache les cheveux avec tes abréviations "fantaisistes" et pas du tout parlantes (pour moi)...

Exemple
467879 = 41 x 11411 + 28
La multiplication étant commutative, on devrait pouvoir échanger diviseur et quotient...

Sur cet exemple, oui...
Mais, s'il s'agit de l'écriture d'une division euclidienne, il ne faut pas oublier la condition r<d.
Contre-exemple :
270 = 23 x 11 + 17 est bien l'écriture de la division euclidienne de 270 (dividende) par 23 (diviseur) : 17 < 23
Mais si l'égalité :
270 = 11 x 23 + 17 est bien exacte, ce n'est pas l'écriture de la division euclidienne de 270 par 11, parce que 17 > 11
La division de 270 par 11 s'écrit
270 =11 x 24 + 6


270  |11
 50  |24
 06  |

@+

[EDIT]
@Omhaf. Voilà ta réponse.
Résultat :

Oui, le nombre est divisible par 41 et le quotient est 406704526112539807086437700968786367223593454869723079574781391772706873230868687125063382997556448002443920000360697485453193426519875723151456698070009867410988103740811

Confirmation Python :

>>> print(1667488557061413209054394573972024105616733164965864626256603706268098180246561617212759870289981436810020072001478859690358093048731490464920972462087040456385051225337321//41)

40670452611253980708643770096878636722359345486972307957478139177270687323086868712506338299755644800244392000036069748545319342651987572315145669807000986741098810374081
>>>

Dernière modification par yoshi (03-02-2020 17:47:00)


Arx Tarpeia Capitoli proxima...

Hors ligne

#73 03-02-2020 18:26:55

Omhaf
Membre
Inscription : 16-01-2020
Messages : 225

Re : Divisibilité des nombres impairs

Re
Beaucoup de respect pour toi yoshi
merci pour tes interventions sympathiques
Acceptez mes excuses pour mes confusions ou erreurs.

Hors ligne

#74 03-02-2020 19:30:34

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : Divisibilité des nombres impairs

Bonsoir,

Tu n'as bien regardé et moi non plus...
En effet,
Le quotient directement obtenu par python se termine par :
...98810374081
Le quotient obtenu par juxtaposition des unités se termine par
...988103740811
Donc le dernier 1 est en trop : c'est mon script qui le rajoute à la fin, je vais regarder ça...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#75 03-02-2020 20:03:52

LEG
Membre
Inscription : 19-09-2012
Messages : 694

Re : Divisibilité des nombres impairs

re@ tu l'as fait exprès pour me tromper.....LoLLLL
passez une bonne soirée
@+

Hors ligne

Pied de page des forums