Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Ultime programme RSA ( Matrice et factorisation nbre 1er )
Aller à la page Précédente  1, 2, 3, 4, 5  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux...
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 14 Nov 2014 12:35    Sujet du message: Répondre en citant

Bonjour ALS,


Merci, je vais voir, pour la forme binaire, parce que ça me renvoie toujours le même message d'erreur de division par zéro...

P.S.: J'ai essayé avec des facteurs de 26 digits, l'ordi tourne toujours depuis hier soir, pas encore de résultat mais j'espère...
Ceci dit ce qui est bien, c'est que la mémoire ne semble pas être utilisé plus que ça, c'est vraiment bien, juste le temps de calcul qui est long, mais sans utilisation de la mémoire, donc pas de bug...
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 14 Nov 2014 13:47    Sujet du message: Répondre en citant

Je travaille avec Maple 17: pour moi, pas d'erreur et j'obtiens le résultat affiché dans le dernier message.
Mais dites-moi, c'est pour des études ou votre travail que vous avez besoin de manipuler ces types de nombres semi-premiers?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 14 Nov 2014 21:14    Sujet du message: Répondre en citant

Bonsoir ALS,

J'ai Maple 16, je vais voir si je peux télécharger le 17 ; par rapport à la séquence quand on fait varier donc les chiffres de 0 à 9 dans l'expression :

" for a from 0 to 9 do
for b from 0 to 9 do
for c from 0 to 9 do"

Fait-on en fait une p-liste de 3 éléments parmi 10..?
Parce qu'en y regardant, je me dis qu'au final ça fera des calculs longs pour des facteurs ayant un nombre conséquent de Digits dans leur écriture.

Je n'sais pas si vous pourriez voir ALS, s'il vous plait, au moins pour essayer de faire une séquence pour des facteurs de 3 digits, mais en s'appuyant sur "le nombre résultat", je veux dire le résultat de la multiplication des deux facteurs

Exemple : 43 * 59 = 2537
Donc on s'appuierait sur le "nombre résultat" 2537 pour trouver les digits des facteurs ; parce qu'il me semble que dans ce cas, on utilise que les couples de nombres possibles, comme dans les images que je vous ai posté dans la boite mail, ce qui irait peut-être légèrement plus vite que si on faisait varier chaque digits de 0 à 9...?

Si on peut le mettre en programme au moins pour des facteurs de 3 digits, comme ça on verrait comment le programme tourne déjà...

P.S.: Non ALS, je ne suis plus étudiant depuis des années ( peut-être 7 ans..) mais c'est simplement que je suis resté un grand fan des Maths et des nombres premiers en particulier etc etc
Et pour les "grands" nombres semi-premiers que je vous présente quelque fois pour essayer de factoriser, il y à vraisemblablement une cagnotte pour certaines factorisations RSA.

P.S.2: L'ordi tourne depuis hier soir pour des facteurs de 26 digits, toujours pas de résultats, mais la mémoire n'est pas plus sollicité que ça...
j'laisse tourner encore cette nuit...
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 15 Nov 2014 9:11    Sujet du message: Répondre en citant

Bonjour,

Je pense que ça ne servira pas à grand chose d'écrire un programme pour une petite multiplication du style 43 * 59 = 2537, étant donné que ce ne sera pas transposable à des cas plus compliqués, quand il y a beaucoup trop de digits. Mais bon, voici quand même le code pour une multiplication ba*dc = N avec a>=c. Chaque facteur premier a 2 chiffres et je suppose que a>=c pour éviter les couples [a,c] symétriques.

Code:


> factoriser:=proc(N::posint)
> local res,a,b,c,r,div1,div2;
> printf("Multiplication ba * dc = %d avec a>=c \n",N):
> res:=NULL:
> for a from 0 to 9 do
>  for c from 0 to a do
>     if (a*c mod 10) = N mod 10 then res:=res,[a,c] fi
> od od:
> res:=[res]; printf("Possibilités : [a,c]=%a\n",res);
> for r in res do
>   div1:='div1':
>   for b from 0 to 9 do
>    printf("Si b =%d, test facteur %d\n",b,10*b+r[1]);
>    if is(N/(10*b+r[1]), integer) then div1:=10*b+r[1]: break fi   
>   end do:
>   if assigned(div1) and div1>1 then div2:=N/div1: printf("[a,c]=%a est convenable\n",r): printf("%d est produit de %d et de %d\n",N,div1,div2): break else printf("[a,c]=%a est impossible\n",r) fi
> od:
> end proc:


> factoriser(2537);
Multiplication ba * dc = 2537 avec a>=c
Possibilités : [a,c]=[[7, 1], [9, 3]]
Si b =0, test facteur 7
Si b =1, test facteur 17
Si b =2, test facteur 27
Si b =3, test facteur 37
Si b =4, test facteur 47
Si b =5, test facteur 57
Si b =6, test facteur 67
Si b =7, test facteur 77
Si b =8, test facteur 87
Si b =9, test facteur 97
[a,c]=[7, 1] est impossible
Si b =0, test facteur 9
Si b =1, test facteur 19
Si b =2, test facteur 29
Si b =3, test facteur 39
Si b =4, test facteur 49
Si b =5, test facteur 59
[a,c]=[9, 3] est convenable
2537 est produit de 59 et de 43


> factoriser(8051);
Multiplication ba * dc = 8051 avec a>=c
Possibilités : [a,c]=[[1, 1], [7, 3], [9, 9]]
Si b =0, test facteur 1
[a,c]=[1, 1] est impossible
Si b =0, test facteur 7
Si b =1, test facteur 17
Si b =2, test facteur 27
Si b =3, test facteur 37
Si b =4, test facteur 47
Si b =5, test facteur 57
Si b =6, test facteur 67
Si b =7, test facteur 77
Si b =8, test facteur 87
Si b =9, test facteur 97
[a,c]=[7, 3] est convenable
8051 est produit de 97 et de 83



Je doute que l'on puisse remporter une cagnotte des factorisations RSA avec ce genre de programme: les derniers succès dans ce challenge ont été remportés grâce au calcul distribué (sur plusieurs machines en parallèle) sous des algorithmes mathématiquement très sophistiqués du style : crible quadratique ou crible généralisé sur les corps de nombres.

On ne peut pas s'aligner à cette technique !
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 15 Nov 2014 23:17    Sujet du message: Répondre en citant

Bonjour ALS,

Merci de tout cœur, le programme est magnifique : )
C'est exactement l'idée, se baser sur le résultat de la multiplication et essayer de la faire à l'envers pour arriver aux facteurs...

Je vais voir si je peux le transcrire pour des facteurs de 3 digits...

Oui pour les nombres RSA, il y à des algorithmes, entres autres cribles quadratiques, certainement le plus "puissant" du moment... mais j'ai la conviction que les nombres n'ont pas livré tous leurs secrets, et la réalité est parfois tellement simple...

Et l'un des problèmes de la science en général est probablement, son propre langage ; je m'explique, c'est à dire qu'une science est toujours un système particulier, une possibilité particulière, d'envisager l'étude d'une réalité donnée ; ainsi par exemple il y à les langues, mais le Langage ; la langue n'est toujours qu'une façon particulière d'utiliser la faculté de langage ( pour l'anglais par l'exemple l'affirmation se dit "YES", alors que pour nous ça se dit : "OUI"...; de même par exemple, on peut envisager la science en général, avec d'autres systèmes, moins conventionnels, à condition bien sûr, de rester logique dans le système qu'on souhaite développer...
Tout ça pour dire, qu'il y à d'autres approches possibles, pour envisager l'étude des nombres, et en science, il faut certainement, parfois avoir des idées "farfelues", nouvelles, des idées qui ne se fondent pas entièrement sur les concepts conventionnels déjà développés, mais des idées, limite "borderline"...

Enfin, je n'en suis pas encore là : )
Mais j'ai la conviction, qu'il y à souvent,plusieurs façons d'arriver à un même résultat en science...
Encore un exemple simple, les notations mathématiques, il y à bien quelqu'un qui un jour a utilisé une certaine notation, qui n'était pas utilisée, qui a peut-être parut "bizarre" au début, mais au final a été intégrée au langage conventionnel des mathématiques...

À bientôt,
Je vais voir pour essayer de transcrire votre séquence pour des facteurs de 3 digits...
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 16 Nov 2014 0:00    Sujet du message: Répondre en citant

Re-bonsoir ALS,


Sinon j'ai pensé à voir une séquence qui donnerait le développement classique d'une multiplication faite à la main comme on apprend au primaire

2 4 1
3 5 3
-------------------
. . . .
. . . . 0
. . . 0 0
-----------------------------
8 5 0 7 3


Donc dans la séquence on rentrerait les deux facteurs, et la séquence nous renverrait cette forme développée de la multiplication dans sa forme scolaire primaire...
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 17 Nov 2014 8:08    Sujet du message: Répondre en citant

Bonjour,

Voici le programme pour le cas de 2 nombres premiers de longueur 3:
Multiplication cba * fed = N, avec a>=d pour éviter les couples [a,d] symétriques.

Code:

> factoriser3:=proc(N::posint)
>  local res,a,b,c,d,r,div1,div2;
>  printf("Multiplication cba * fed = %d avec a>=d \n",N):
>  res:=NULL:
>  for a from 0 to 9 do
>   for d from 0 to a do
>      if (a*d mod 10) = N mod 10 then res:=res,[a,d] fi
>  od od:
>  res:=[res]; printf("Possibilités : [a,d]=%a\n",res);
>  for r in res do
>    div1:='div1':
>    for b from 0 to 9 do
>     for c from 0 to 9 do
>       printf("Si b =%d et c =%d, test facteur %d\n",b,c,100*c+10*b+r[1]);
>       if is(N/(100*c+10*b+r[1]), integer) then
>         div1:=100*c+10*b+r[1]:
>         if div1>1 then div2:=N/div1: printf("[a,d]=%a est convenable\n",r): printf("%d est produit de %d et de %d\n",N,div1,div2): return fi
>       fi
>     end do   
>    end do:
>    printf("[a,d]=%a est impossible\n",r)
>  od:
>  end proc:

> factoriser3(743471);


Multiplication cba * fed = 743471 avec a>=d
Possibilités : [a,d]=[[1, 1], [7, 3], [9, 9]]
Si b =0 et c =0, test facteur 1
Si b =0 et c =1, test facteur 101
Si b =0 et c =2, test facteur 201
Si b =0 et c =3, test facteur 301
Si b =0 et c =4, test facteur 401
Si b =0 et c =5, test facteur 501
Si b =0 et c =6, test facteur 601
Si b =0 et c =7, test facteur 701
Si b =0 et c =8, test facteur 801
Si b =0 et c =9, test facteur 901
Si b =1 et c =0, test facteur 11
Si b =1 et c =1, test facteur 111
Si b =1 et c =2, test facteur 211
Si b =1 et c =3, test facteur 311
Si b =1 et c =4, test facteur 411
Si b =1 et c =5, test facteur 511
Si b =1 et c =6, test facteur 611
Si b =1 et c =7, test facteur 711
Si b =1 et c =8, test facteur 811
Si b =1 et c =9, test facteur 911
Si b =2 et c =0, test facteur 21
Si b =2 et c =1, test facteur 121
Si b =2 et c =2, test facteur 221
Si b =2 et c =3, test facteur 321
Si b =2 et c =4, test facteur 421
Si b =2 et c =5, test facteur 521
Si b =2 et c =6, test facteur 621
Si b =2 et c =7, test facteur 721
Si b =2 et c =8, test facteur 821
Si b =2 et c =9, test facteur 921
Si b =3 et c =0, test facteur 31
Si b =3 et c =1, test facteur 131
Si b =3 et c =2, test facteur 231
Si b =3 et c =3, test facteur 331
Si b =3 et c =4, test facteur 431
Si b =3 et c =5, test facteur 531
Si b =3 et c =6, test facteur 631
Si b =3 et c =7, test facteur 731
Si b =3 et c =8, test facteur 831
Si b =3 et c =9, test facteur 931
Si b =4 et c =0, test facteur 41
Si b =4 et c =1, test facteur 141
Si b =4 et c =2, test facteur 241
Si b =4 et c =3, test facteur 341
Si b =4 et c =4, test facteur 441
Si b =4 et c =5, test facteur 541
Si b =4 et c =6, test facteur 641
Si b =4 et c =7, test facteur 741
Si b =4 et c =8, test facteur 841
Si b =4 et c =9, test facteur 941
Si b =5 et c =0, test facteur 51
Si b =5 et c =1, test facteur 151
Si b =5 et c =2, test facteur 251
Si b =5 et c =3, test facteur 351
Si b =5 et c =4, test facteur 451
Si b =5 et c =5, test facteur 551
Si b =5 et c =6, test facteur 651
Si b =5 et c =7, test facteur 751
Si b =5 et c =8, test facteur 851
Si b =5 et c =9, test facteur 951
Si b =6 et c =0, test facteur 61
Si b =6 et c =1, test facteur 161
Si b =6 et c =2, test facteur 261
Si b =6 et c =3, test facteur 361
Si b =6 et c =4, test facteur 461
Si b =6 et c =5, test facteur 561
Si b =6 et c =6, test facteur 661
Si b =6 et c =7, test facteur 761
Si b =6 et c =8, test facteur 861
Si b =6 et c =9, test facteur 961
Si b =7 et c =0, test facteur 71
Si b =7 et c =1, test facteur 171
Si b =7 et c =2, test facteur 271
Si b =7 et c =3, test facteur 371
Si b =7 et c =4, test facteur 471
Si b =7 et c =5, test facteur 571
Si b =7 et c =6, test facteur 671
Si b =7 et c =7, test facteur 771
Si b =7 et c =8, test facteur 871
Si b =7 et c =9, test facteur 971
Si b =8 et c =0, test facteur 81
Si b =8 et c =1, test facteur 181
Si b =8 et c =2, test facteur 281
Si b =8 et c =3, test facteur 381
Si b =8 et c =4, test facteur 481
Si b =8 et c =5, test facteur 581
Si b =8 et c =6, test facteur 681
Si b =8 et c =7, test facteur 781
Si b =8 et c =8, test facteur 881
Si b =8 et c =9, test facteur 981
Si b =9 et c =0, test facteur 91
Si b =9 et c =1, test facteur 191
Si b =9 et c =2, test facteur 291
Si b =9 et c =3, test facteur 391
Si b =9 et c =4, test facteur 491
Si b =9 et c =5, test facteur 591
Si b =9 et c =6, test facteur 691
Si b =9 et c =7, test facteur 791
Si b =9 et c =8, test facteur 891
Si b =9 et c =9, test facteur 991
[a,d]=[1, 1] est impossible
Si b =0 et c =0, test facteur 7
Si b =0 et c =1, test facteur 107
Si b =0 et c =2, test facteur 207
Si b =0 et c =3, test facteur 307
Si b =0 et c =4, test facteur 407
Si b =0 et c =5, test facteur 507
Si b =0 et c =6, test facteur 607
Si b =0 et c =7, test facteur 707
Si b =0 et c =8, test facteur 807
Si b =0 et c =9, test facteur 907
Si b =1 et c =0, test facteur 17
Si b =1 et c =1, test facteur 117
Si b =1 et c =2, test facteur 217
Si b =1 et c =3, test facteur 317
Si b =1 et c =4, test facteur 417
Si b =1 et c =5, test facteur 517
Si b =1 et c =6, test facteur 617
Si b =1 et c =7, test facteur 717
Si b =1 et c =8, test facteur 817
Si b =1 et c =9, test facteur 917
Si b =2 et c =0, test facteur 27
Si b =2 et c =1, test facteur 127
Si b =2 et c =2, test facteur 227
Si b =2 et c =3, test facteur 327
Si b =2 et c =4, test facteur 427
Si b =2 et c =5, test facteur 527
Si b =2 et c =6, test facteur 627
Si b =2 et c =7, test facteur 727
Si b =2 et c =8, test facteur 827
Si b =2 et c =9, test facteur 927
Si b =3 et c =0, test facteur 37
Si b =3 et c =1, test facteur 137
Si b =3 et c =2, test facteur 237
Si b =3 et c =3, test facteur 337
Si b =3 et c =4, test facteur 437
Si b =3 et c =5, test facteur 537
Si b =3 et c =6, test facteur 637
Si b =3 et c =7, test facteur 737
Si b =3 et c =8, test facteur 837
Si b =3 et c =9, test facteur 937
Si b =4 et c =0, test facteur 47
Si b =4 et c =1, test facteur 147
Si b =4 et c =2, test facteur 247
Si b =4 et c =3, test facteur 347
Si b =4 et c =4, test facteur 447
Si b =4 et c =5, test facteur 547
Si b =4 et c =6, test facteur 647
Si b =4 et c =7, test facteur 747
Si b =4 et c =8, test facteur 847
Si b =4 et c =9, test facteur 947
Si b =5 et c =0, test facteur 57
Si b =5 et c =1, test facteur 157
Si b =5 et c =2, test facteur 257
Si b =5 et c =3, test facteur 357
Si b =5 et c =4, test facteur 457
Si b =5 et c =5, test facteur 557
Si b =5 et c =6, test facteur 657
Si b =5 et c =7, test facteur 757
Si b =5 et c =8, test facteur 857
Si b =5 et c =9, test facteur 957
Si b =6 et c =0, test facteur 67
Si b =6 et c =1, test facteur 167
Si b =6 et c =2, test facteur 267
Si b =6 et c =3, test facteur 367
Si b =6 et c =4, test facteur 467
Si b =6 et c =5, test facteur 567
Si b =6 et c =6, test facteur 667
Si b =6 et c =7, test facteur 767
Si b =6 et c =8, test facteur 867
Si b =6 et c =9, test facteur 967
Si b =7 et c =0, test facteur 77
Si b =7 et c =1, test facteur 177
Si b =7 et c =2, test facteur 277
Si b =7 et c =3, test facteur 377
Si b =7 et c =4, test facteur 477
Si b =7 et c =5, test facteur 577
Si b =7 et c =6, test facteur 677
Si b =7 et c =7, test facteur 777
Si b =7 et c =8, test facteur 877
Si b =7 et c =9, test facteur 977
Si b =8 et c =0, test facteur 87
Si b =8 et c =1, test facteur 187
Si b =8 et c =2, test facteur 287
Si b =8 et c =3, test facteur 387
Si b =8 et c =4, test facteur 487
Si b =8 et c =5, test facteur 587
Si b =8 et c =6, test facteur 687
Si b =8 et c =7, test facteur 787
Si b =8 et c =8, test facteur 887
Si b =8 et c =9, test facteur 987
Si b =9 et c =0, test facteur 97
Si b =9 et c =1, test facteur 197
Si b =9 et c =2, test facteur 297
Si b =9 et c =3, test facteur 397
Si b =9 et c =4, test facteur 497
Si b =9 et c =5, test facteur 597
Si b =9 et c =6, test facteur 697
Si b =9 et c =7, test facteur 797
Si b =9 et c =8, test facteur 897
Si b =9 et c =9, test facteur 997
[a,d]=[7, 3] est impossible
Si b =0 et c =0, test facteur 9
Si b =0 et c =1, test facteur 109
Si b =0 et c =2, test facteur 209
Si b =0 et c =3, test facteur 309
Si b =0 et c =4, test facteur 409
Si b =0 et c =5, test facteur 509
Si b =0 et c =6, test facteur 609
Si b =0 et c =7, test facteur 709
Si b =0 et c =8, test facteur 809
[a,d]=[9, 9] est convenable
743471 est produit de 809 et de 919



Avec ce dernier programme, je pense qu'on a fait le tour de la question après tous ces échanges de messages. Je n'interviendrai donc plus sur ce sujet.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 18 Nov 2014 16:17    Sujet du message: Répondre en citant

Bonjour ALS,

Merci beaucoup de votre patience : )
Vous avez raison, ce sera redondant de transcrire pour plus de digits...

Je vais essayer une autre possibilité qui se base en priorité sur la partie décimale d'une formule qui est vraie pour tout (p) quelque soit la longueur de ses digits :

Soit p un nombre semi-premier tel que p = m*n avec m<n et m/n >0.5 alors on peut remarquer cela par rapport à la partie Fractionnaire de cette formule :

" FRAC ( p-2sqrt(p)) " ou
" FRAC ( 3*sqrt(p)/sqrt(2)) "

Pour des p, où m et n sont très très proches, on a EXACTEMENT la SOMME de m+n avec cette séquence.


Essayer si vous avez le temps par exemple de lancer cette séquence :

================================

Code:


> restart;
> Digits := 200;
> p := 157448655946481246819918475838103364005599307383657177090765052025661079296326798185361022961239579621905159067381099;
> p1 := length(p);
> N := 2*sqrt(p);
> M := p-2*sqrt(p);
> M1 := evalf(M);
> P := trunc(M1);
> Q := M1-P;
> s := [seq(f+Q, f = 0 .. 10^3)];
> t := [evalf(seq(N+u, u = s))];
> T := {seq(round(i), i = t)};
> for g in T do r := (g+sqrt(g^2-4*p))*(1/2);
> if type(r, integer) then break end if end do;
> print(" ! PREMIER NOMBRE ENTIER TROUVÉ...! "), print("TERMINÉ  r =", r);
> R := evalf(3*sqrt(p)/sqrt(2));
> U := frac(R);
> s := [seq(f+U, f = 0 .. 10^3)];
> t := [evalf(seq(R-u, u = s))];
> T := {seq(round(i), i = t)};
> for g in T do r := (g+sqrt(g^2-4*p))*(1/2);
>  if type(r, integer) then break end if end do;
> print(" ! PREMIER NOMBRE ENTIER TROUVÉ...! "), print("TERMINÉ  r =", r)


========================================

Comme vous pouvez le voir j'ai pris un nombre semi-premier de 117 digits, qu'on arrive à factoriser en 1 seconde, à la seule condition que ses deux facteurs sont très très proches.
On peut donc dans certains cas, en attendant de trouver mieux, de trouver la somme de m+n juste à partir de p.
Je re plus tard, j'attends que vous me donniez votre point de vue
À bientôt.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 19 Nov 2014 4:01    Sujet du message: Répondre en citant

Re ALS,

Avez-vous essayer un ifactor(157448655946481246819918475838103364005599307383657177090765052025661079296326798185361022961239579621905159067381099).................?

Je ne sais pas quelle méthode utilise Maple, mais il ne semble pas pouvoir factoriser ce nombre semi-premier en un temps polynomial.

Avec la précédente séquence, la factorisation est instantanée...
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 19 Nov 2014 8:31    Sujet du message: Répondre en citant

Bonjour,
Votre séquence ne marche pas entièrement d'un point de vue logique.
On sort de la première boucle avant la fin en affichant r=12547854635214788254712369874523214785632147856524125634647
qui bien un diviseur premier de p.
Par contre, la seconde boucle s'exécute complètement, car r n'est jamais obtenu entier.
Cependant la séquence affiche

" ! PREMIER NOMBRE ENTIER TROUVÉ...! "


"TERMINÉ r =",

13309009652855144077690876030490104925426653445518678667076

+ 1968108199331015585248980947976292050069991342295714713\
6335413334654510873103399342224703042941414891414576979008\

1/2
677
Or ce nombre n'est pas entier.

Je vous propose donc de déplacer les messages print juste avant le break comme ceci:

Code:

> restart;
> Digits := 200;
> p := 157448655946481246819918475838103364005599307383657177090765052025661079296326798185361022961239579621905159067381099;
> p1 := length(p);
> N := 2*sqrt(p);
> M := p-2*sqrt(p);
> M1 := evalf(M);
> P := trunc(M1);
> Q := M1-P;
> s := [seq(f+Q, f = 0 .. 10^3)]:
> t := [evalf(seq(N+u, u = s))]:
> T := {seq(round(i), i = t)}:
> for g in T do r := (g+sqrt(g^2-4*p))*(1/2):
> if type(r, integer) then print(" ! PREMIER NOMBRE ENTIER TROUVÉ...! "); print("TERMINÉ r =", r); break end if end do:
> R := evalf(3*sqrt(p)/sqrt(2)):
> U := frac(R):
> s := [seq(f+U, f = 0 .. 10^3)]:
> t := [evalf(seq(R-u, u = s))]:
> T := {seq(round(i), i = t)}:
> for g in T do r := (g+sqrt(g^2-4*p))*(1/2):
> if type(r, integer) then print(" ! PREMIER NOMBRE ENTIER TROUVÉ...! "); print("TERMINÉ r =", r); break end if end do:

                            Digits := 200


  p := 15744865594648124681991847583810336400559930738365717709076\
        5052025661079296326798185361022961239579621905159067381099


                              p1 := 117


  N := 2 1574486559464812468199184758381033640055993073836571770907\
        6505202566107929632679818536102296123957962190515906738109\

         1/2
        9


  M := 15744865594648124681991847583810336400559930738365717709076\

        5052025661079296326798185361022961239579621905159067381099 -

        2 157448655946481246819918475838103364005599307383657177090\
        7650520256610792963267981853610229612395796219051590673810\

          1/2
        99


  M1 := 0.15744865594648124681991847583810336400559930738365717709\
        0739956316390649719817373445611976531668315326192110816112\
        1350000000000000000000000000000000000000000000000000000021\

                                       117
        6969360830772608776010093262 10


  P := 15744865594648124681991847583810336400559930738365717709073\
        9956316390649719817373445611976531668315326192110816112135


                                                     -53
             Q := 0.216969360830772608776010093262 10


                " ! PREMIER NOMBRE ENTIER TROUVÉ...! "


  "TERMINÉ r =",

        12547854635214788254712369874523214785632147856524125634647

Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 19 Nov 2014 14:29    Sujet du message: Répondre en citant

Bonjour ALS,

Merci beaucoup, la correction que vous avez apporté fait fonctionner la séquence à merveille : )
Le temps de calcul de Maple est de 0.03 seconde !

Je n'sais pas si vous avez essayé de faire un ifactor du nombre, mais Maple s'emballe et ne semble pas pouvoir factoriser le nombre :

========================

ifactor(157448655946481246819918475838103364005599307383657177090765052025661079296326798185361022961239579621905159067381099)
========================


Que pensez-vous de la séquence ALS, avez-vous remarqué qu'elle ne s'appuie principalement que sur le nombre p lui-même ; c'est à dire que , dans un nombre semi-premier, les deux facteurs m et n pourraient probablement être trouvés sans pour autant effectuer les divisions du nombre de 1 à sqrt(p).

Pour tous les nombres semi-premier dont les facteurs sont jumeaux, voire très très proches, la séquence me semble t-il fonctionne en un temps de 0.03 seconde.

Le truc maintenant c'est de pouvoir, généraliser même pour quand les facteurs cherchés ne sont pas forcément proches, mais toujours avec la condition que m/n > 0.5.
Merci ALS, je suis persuadé à 1000 % qu'on trouvera la solution, mais j'ai besoin de votre aide : )
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 04 Jan 2015 21:06    Sujet du message: Répondre en citant

Bonjour ALS,

Je viens vous souhaiter une bonne année 2015 et vous dire encore un grand merci pour toute votre aide : )
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 05 Jan 2015 8:21    Sujet du message: Répondre en citant

Merci pour vos voeux. Une bonne année 2015 également à vous et plus généralement à tous les utilisateurs de ce forum.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 05 Fév 2016 20:08    Sujet du message: Répondre en citant

Bonjour ALS,

J'espère que vous allez bien, je voulais juste vous dire que je vous ai envoyé un message privé : )
@Bientôt
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 06 Fév 2016 6:24    Sujet du message: Répondre en citant

Je vous ai répondu. Félicitations !
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux... Toutes les heures sont au format GMT + 2 Heures
Aller à la page Précédente  1, 2, 3, 4, 5  Suivante
Page 4 sur 5

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.