From 26d10f52566b85d4b3e24f593ebbfdbdea4b497c Mon Sep 17 00:00:00 2001 From: Mehdy Leroux <22010519@c304l-415c04.campus.unicaen.fr> Date: Fri, 1 Apr 2022 11:45:40 +0200 Subject: [PATCH] fin Tp2 --- src/bignum.o | Bin 9952 -> 14160 bytes src/hash_tbl.c | 1 - src/hash_tbl.o | Bin 4656 -> 4704 bytes src/list.o | Bin 6384 -> 6432 bytes tests/htbl_tests.c | 13 +++++----- tests/rho_pollard.c | 61 +++++++++++++++++++++++++++++++++++++++++--- 6 files changed, 65 insertions(+), 10 deletions(-) diff --git a/src/bignum.o b/src/bignum.o index 467ffb17e5c40872c4cc201cf28ed32e69b9289a..1c46d089cad0837311331a1bc2e790eb3c8d8b57 100644 GIT binary patch literal 14160 zcmb<-^>JfjWMqH=Mg}_u1P><4z;MA3!FB*M9T>zIL>WHw%l!)V=zQwY{6=8E00RTV z3y`Eor|S=oZr2|koyQ^kZr2|t4<o5n=&XH%s=V9vjYskYh^A|}^?7vGzUVA{f~Gh0 ziAT5Z3y9`(_%-hUxewwfup>jE+Hl(`;L%x&;TxDG6HvSbQQBGh!J|9$1H?ISb6XGa zPdUK9?Eonn=8>e~;0t*Y&7V(_`QI;Ku|WY8BOaZl4=@7u0nu?XLbV&fg3hBe^agtH z`QGs84t?O!T?$Q~xH1yV3>5vKwD$m(L?M|m^anILK6rE@XORym>5-z?Y<#nTfq}uJ zb8p7~|NlKYw<i4m|3Af}n?+RvEbRKj@PNnh){6iC|AX=%ii0~mj=MI1L|?mkbWa8A z?{;nQV7$P;je&pL0gqna2_D^3L0UZ+FLoaC=rsi?_UJs1WXcQ=MzG-?&8`iM9w6=3 ztso~9t%YcJ?brn>pisTv;n7|CBgMnm1nkHXR&dFH5+sm34KB<M?c-u#VAv0`8mdmU zg5f&{0|N_4h=BuKaPolJNW_1LELemIL^53zw`5>oVCG;4@mN?`GxJIqSV5&KGY2b3 z2u87h6|iwIGjf21nZSHzMm7i!tQKq{^9)HJ1_lNQd!{sq&CW3wWCuhoD~Js?;|7Z% zhXE4<11HD`7Grjhtx%2`=X3@J1`ddfIhZ2=;aGq<5)h6hn4<vUSb;ej5RNsNV*ugU zfH@WrjxCtu0O2@*IUW#>BbXBa;W&Xg5fF}xm?skhLjr{3CgRV;z>opqcz|790O5Fo zIVBK|7k51a149Lb<13WKz`)P|;rQ_vGB7YSK{);#p-c=6%@9r?e<~9LLkENt$=l7q zz%T*Ai54$lVqlm7;lxN*GchnMfN)~L&RGHB#BnAvFfeR@aN@ai85kILKsX6tw;h0R zk~kWf7#NN~B8in<awP);11LE$uxRsfgJOf7!-a`~ft>>+!2^mgkh^$6DFq~I!^FS< zRhErlmN79ffYnZ9VqgHP6=vWA8OGMhHy3OgD6%0UU0@LiyBo{~rx*5KX^<WK0_@W` zf51`(`wXzt8Ng0wp9SWyKsa;xK&m(x*g1AHL6aQ&Jm%wY_7X8MW(EeHe@qMvYRpha zF))B~9s~PxMn!i980QtEG${2!WZp7r1v7*ExrBj%fz_88YBD3MKnhrxi<yBz5acn& z3U*L31u;PwRJ4F-#yPW?85o2r7#J($B0#z)W<b^FaDn(BH6VNiL@+QgFwW6rVPFsj z@fdS7L2TxUH|m6PQu7!Xb1Xn{$UN~vok%eQV=jk23j+i5#D;p2A_m4haQre)d{HM- zlv>Qdn9l<;oq6JqI#G~WARG%K7#J8tG8q^P`5;Dpr~~;enE@JG_AJnVNrpNy4aJf6 zP!kyEbh0oo2qiKwra?UwA(X_xn5G4?lWAgrNIC;!I@keBaPP*WnB)&P=@H1J3I@h_ zxJjuM1q_VwaI>ly7!#moC5WUlFeZwEk_E!xNECxz;09Z=Lc%>#9^$G9p*#l0NNorw zKq!}iG145u@erwEV2py=0gIks6k`!SZw48g$iNs3cW)8{V=&yc6%33aXeRmMFzGDR zBwu8ce34D^Lo>-8he_gWkl1iXHpv~?Bo8!`9C4VG2sOzO*(66~lbp~@vc_T3YN$!p z$R=4Mn`DD#k~z4lfyN&LtX<DI=LOUxb4f^aWq{I}xhjN{08OaII5exWLxRRw0-_$Q z*;oa_foax5(X0=30^^({sAfH6&3b5>HBmGpoIM|^SrggWnrO~e#i98QRI@6w&8l#l z#XwGEQ~=kvAf`5m0GA#d9FSD601b9na+X4gCUdxYSEza^SS}H%WMGs=iy2`Q&9-pO z6G57b85o5XKt&(Z#0W^aC9DoAKba<mh*U5zilCXri(-}q+^lmTv+@`idF3FQV?dhu z;F`rj3K`i^H0yxGz`h2l<$$YYU=(Cj<rC&+=9A_VWE5f-5NBXu5@TTIv*Nbqw&eB{ zW?*1eVc_Pr<7Vb#U|@kVIT#pN)fhmMZ2Sz|+zbrtAPU6i5N2fN<K~9wW)x;%;N(Rz z%z~SNfeT?e0|U1(12dnEBm)BvBcrD<NIkD2gQu`QHv<Eo36e&8NsuCbVMb)51)wTe zLGFa85Y%I|mxMW9UD8t+<R=G-X-<+LvxQh0m^mO$^Au*1U|<ktMY01VAYy{1LX?{k zWCR0)7^=x2LAbf%$Z|+_GB7ZJ!W~>iGk}|J&{$w#KyFaN1sNC^>X{fAm>F0Y85kHD zfAjG&FfxKW_8`7~X>pN$PG*vRdUCRUg@swXnTc*rW?pH9ZhBs+zNLO<UUE)pN-6_b z9h8HqE-AC5m<T2MC6xuKs0#7xVqi$hOwTLL)dN+K48<iWDXD3C8K7|put|Cuphi=1 zNl|HXNxYk<kE>n=12Y2yf>m6Sl9{iU0cwV)=N9N?Fo0Udtl|uukkDgbV31&y-p$H< zot0}hE2B57f&r`aQ!tmq8^qT!V3p?3hX_Q11QZQf1wKRg`XIi70W0(8-K>neS=H=V zxj1ZDr8x9h8Jk(v4Ul<ih6r9dD>4sVrH%os0EaEaf^?7t)DW-)8CnW4v=n5h9!S8J zRq{G3^Ji8r4(t}$7;x-j<$A^{w3e0c1}k$Ds~Q6n3$s2eFNoq0Vr2)>OqxQh@*qYr zD>DNV3uDA-RxS>(9SR&#tX!X2895@Em>3ut<Ky$w(&9@P;ywN2i&7I);tNWO7~+#N z5;OA{iZiQHK~lvT`9&p3rD<SANu_D=Nr}a&&=e3~k{@3T){>u+np{=_6HYB;$jQ%3 zR{#^B?ox4PdR}UZLUKl85kq`hW=?8eKG;04rKx!-5al41@o71U>BV44kYymb_~g=} z_~iVY(%d`-cfU{tXG=>3OFa`k0|njOlG40X+w|1D)S}E}1>M}lqT~$Q3JWt`GZO{f zbOqhSyy8p+-QtoI+hj{i1>Lm7;>x__jH3L!{L*6G(!BD_ycFG%#H5_mVg=o_;*!MV zY~6yQ{F2n<lKdjw;*uheCtwoEIf=y?FzL+vJO$mf<TNBcLwtTt3MfE}Q%e|NbZ$Wv zC=lb*a|_~Ai;AG$&P^=JPAvjuoy<Ij(mZJBK)hd+np%`v91jX{aPXl>>u2QWrs^9R z85kOv8d~c680mWErRD1fr{<;>mlUNc80iNeUYT54lv#3kr9x_nLSkl0s>0y~3OR`i zDTh}kXBKDX=joRe=w{}X6y>LsCYNO9=jkTu<|OJCr-HSm>gE{f7Z)XiBcQw}vm_Oq zCcue60mUhhG9W&!C_gve*Tod9p*XQD6(xNX<d?(J1Uzx1C#NvP=N80+5*R~#PJVJW z10>Ro7~*sDQ&K^}l3!ZF08VGQDW=7xxeW2~pn!ywDPWr*P6MY7Pk*o>@L&cNd+`OS zMe#YAxk+HfprQwCCCFlM&=<p8Ra}|`V<x7gAmRd?QlVZ<M>xGCl>rhI;JEVik1x+m zNsUiQEJ<X@EdW~xaz+_ANx_l;*mkH<DWGV|uY_5dTbcu7=9Hu|AX}P}Sq64;Vopvz zBsP+vc?_Is%}hWR!Lltls6d$*90A}^0jIdK)FM!f!|W)?F9!u>L1Kz2LwspoX>n?b z5h%1%i;7@MlJg5H!C{t^n4Dc&fD)NisYUrPb-DQ|P^MloLwp)E(dJ|pmoOlO3Dno% zGy*OsKp_TBRA3h)OM?Ow%FiibU~qSKwo=dtO)AYRDTQQqUBgl^&#=zOK+nKL&rlO0 z4z5x`V>Y0kDX1oK_X`D8KnFl#%wSmt1`#ODSQW&;SRueD&BM+yfsuhhh5>>>(xCdA z!Ie*-jmeppEt!WMREvY;Z9tL?3=H5#8B9JOAs+*k2R8s=@+AoQ8mK(DbqSNtL&(p8 z%7a_0F!>~e{2r)0xD5@H&p^oEAt3(;Di3bJ!}O;i^vi(9!5AQ23z$5T`8EXPW1#Zj z&LB*G8N&P;0`hYR$nPN_e}{nlAE-RI4-9i(HNt%|&}Ij?^9_?{asw*>$3Ijam;Yj* z^5C%wxc<{{{WVZ|@Yn}TJ{~L$jTuY|<YX3xkKmD4bXjIlOAB2PG<XPVWnmQu<pfL# zW^lU;n>f4!g(As})~<y~GDC))U|cxO3>g4}^I;5T23{Bwg=S{pN8!Ub%#hJ27#B`6 zL;ARIK8(Q(8B&9B!8B;(P6#R7z<Hg4fdSNG1eF_LMMwll9-Fu^Y&Z-_Er<z98zA#R z`apbeS;4@-07_HX%t>NkU;wF40V!r+U;vjL3=9lKILvQ^s$U3I4=zg>7#MnSsGk8< ze*>x>T(&SUFf7NRehUuqoltX_K?#xpT1GH1FdW9A{v1@j37YzwQ1Mi#IJhigU|@I* z6`ukX2bXaS3=D6f;z!ZMe?Y~*LB&Dg4)P+%eb~a8j}a2irqDbHQ!mK~9o7VCM#3sk z^(AQP^>L`Tf~wz)rrs5Y`e3N~PiX4naH!9OsyBpIWZ*K4fq|hEhx$gS`ckNRQ2GOT zuLp<vSvbU3K+QP<H3t@Mn{lY$2UX7uEo#7JAp--$IUMS*;ShfgHRn3i9B`S*z`*bo zhk8UC1lo20w^8EVef*sqed7Jy+=5+0;zJyrd|cxha-mHrP|K()J~J;9-mC++Pe2Wj zc!XShacW6?aVFFPNHez>)YX9~0n3)4HJjj4FkP_b9@O0AoYcf322f)OrXaPD0VbDQ z022f?1)<)_fx8j45ek(CHCdthK}@J9s7(tM1u>zbptdGd6vTvzf}5ETcc-Ofmc<vs z906+J!IZ<>dhyT}WICud4rW7*0k!j?s?$?T;!87O-YUp12l1fFz)gRMZ6GF86de4Z zE<|xbQD$CA8bf?MxGNT)oRJ-$mY4}|Bg1-|P!m8AR01k7L3tdM${9dI3gBAd&wmI| zf(V1fg%}tZVB(HQ;-Gm7n0OSDIH=7C6R$-QM^+CS-~&m4k}Ie#fvMjP5@dk52UM%U z#6jgFND8E00?9oeK!Q;9Qb^*kwi`&jG?KU)wEP2!%OZ(~;}Gw_A-)}l_zN830?={` zWG}M6w2{P>k=z5C1_XHxU40gkdQ~L#eMsWS=C4E&S4UER7D*gg{R<><O(gX^(DDr3 zJ?co}pt=$kU;aqq$mVAwiG!w$VCwsk#F5p{M-m6seK7UAki-p;+<6a49NC<oNa99F z>K#BHf~Fs2^_5U@P;h|yMlgHZpyD9P1j(G8AOWa3$m#hak~nBCA7;)^Bymui1SSq^ zL4w*{;8}1`A^=UNL1~aU2ycS&L3s+q1c`yL9n@UdEFDM;gf~Ldr6fo(Xp9>+jSl65 z;u^#RsRhq}f;bEe40=!+Bo4x$c0EW4*0%$Rf$)5&`LKEuBnHA=AjJ#}3}H|jBnHCK zP(ExD5hMn}tx$8)pz<Iw5Eg{SUoM)sCMbd!7#K>>#51A%YA6jd1B6YW=71MrKxd{w z;!tG_Jx~Tn41~8r)q_@ifTTcTAPh^dt3ZNC<~)YF2Ud=O)PnG2sJbIi8YBk7puRFl z=pu+fG6z;}-a`}L4|UILH1Psxyo1_#ASsa9AS?}a4=XfWL1G}h4Js~#CJxGzApP=a z;<G@4ps{*1aUZBTmT2PQQ1`f@iJyhKAJm=$83}R=2*cWS325qJ={OfnycDFFfq|h4 zO}qo@o^~{GKPVs8UIy6-!porMEQHE~#6UO<>dtj&;-E4bq-8gncoWp#6KLX5Q2tdY z4Kf>qJwS#qFfcqq6Ay)k+j}%|cc?h5PYyBzgeO7O!KMH}Vj%nl>V7e(yFg+fJORpA zhSDH05dIBSZ-^$I3Kh3S6F&mwyFzJ@86aE&bx#hO_)4fb<!It|Q1MA<;`LB-mY|7G zgYq{(X^@>D%mNLcJ!s-SQ1dUMiNorZduZa7Q2uKu4Kf>q-$42Qp)^Pggkkk7H`E@G z7zigp-4ClDL1G|$9;zQ!4uQl#I0LHQ5zU-iP<|wo2B`&M(3%-g5`xvIATbcO0tqrO zFqA>ngNy}P3F{ZkhKhsKf-q>g4M@u}s5neLtUt0BDh^T$!izwLF)%Q2Lc<%T-UG^q z)u$k}Ae;wP?+ulQsfYECx}f49wICb?RX-If4pR^7mpz7xgVciX3#j|vLB(O}Vf{WU zQ00wOt{OwtxkANZ>S5(i3sf9rHV99Fn%@r<hpC74ThBqoL25y`5~}_tR2-%r)-RTT zR`4LTAp9HZUuCE`Og*gModgvJsRdy+sQI~2ahQ5ozkUr=9HbV6HKFRaL&ah0VdDcY zq2eI5AS@46{{<=zQx7XQ)u4?MkXjJ#hlZyiR2-%rHeQho6$hyW;TEX*c~Ehfdf2$f z0;o7hEeHpK5+?%#!)mBFOg(7a0wi@8Dh^T$!dX!BpFqW7>S5zKoX`pvq!xs^q3#!f zio?{y#*5sb;vlskoB&lH2o;B^hmA*-Ld8L9K^U|+4dl*AXyWxybLK+DVdlWb!Ola) zL1uukI#m5Fs5neL$ZQaXMi+Rc9gGbUhmGx^s}}|dU}*;`fHXndhR~!576C1y05L#f zAPjS70!R=^JuDnx?JJO45Qc>(tQ`ds17TRa96&P%7QYYB#9`?KHY5o$1B7AeO#$jJ zkQfNV(yarUI4u3c+8ZFXAPmb#4QT3N`Edc7I4oZuKof_R4-e49VdV^Hq6OqNkewh5 zE3Xtl9Hj7sm3t0o;;`~F0ZklMZa1Kb!^(dKz2eH;lEfqiz2cH02%Q0A6{Y4R>XoEc zlrZRlC+75$ii;Wait-^Guxv_dQfYd8W?ou8gC2yPn3PnMTE?J<B%N54n3tXk(h4#V zqAVvfFBPT*G#aFroS&PUnpeW0mzQ6Xs^{((stX>vfb!GxO7#kg@(WUnN-Cjdr)I>b z6(#1Tf<ldQ3`*yqs6oyvAX8!K9DVHxNG(VnhCyQrpezYf4-=PAgs>(+%OTJTCXile zwq*c~U4T@mLGvC|8Au3>?V<Gsn1e)s%s}FT*UW&-Bv(IZyclFAG?~DShS`s9E=Vn0 z5d#B*9n}5EVj#8?)cwCfjspomF}i-xnoDfqw?YM?!2(q1F+f(Xg5n5f94!32aM*7P zUiZtu5RYad8kYgo??e{^**pg{2*AL=02)&O@nINUZ3MKhj~@RIpdDtIeo*{_`qSv{ z2d&aZHxp#n8L0iuXc2?1HV23O0-!+>&_W=PVbJgcEvH7eAJo4DnF(_zR5^n`Xt0lg zfng>na$tf;VGYs)67GPCq3eGE8vFqD6G4iQFianeo(R>Cqy)?q0WZu0Gf@bbKA0e= zJ^@wnXu-rF0o4!6-!Qcx8s>ix8-zjgGaxh3^;<yo&p?wv*AJTa0R<6y{A)nNA6D*z z;vY0d1Je&nzu4>sx$6RSfW`ruk3eIopd^8=AC#uh^C(EafINs~U|>OWKgd3a41@%^ T37dWnP{9D5r-G=2km&jWrk2Oz literal 9952 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 diff --git a/src/hash_tbl.c b/src/hash_tbl.c index 27421d0..91f1b8c 100644 --- a/src/hash_tbl.c +++ b/src/hash_tbl.c @@ -8,7 +8,6 @@ struct hash_tbl { int (*eq)(void*, void*); void (*free)(void*); unsigned long int size; - unsigned long int capacity; size_t capacity; // array length list_t* array; }; diff --git a/src/hash_tbl.o b/src/hash_tbl.o index 56354d5beb37b98cd621bbef99d5f834474f909c..0f86b20d6868f49f5cf8b2892055390df05cc273 100644 GIT binary patch delta 1320 zcmdm>@<3&R24liR&16Q0iM_h@3=9km%ooKiK@<l&h{wXhnweL^z|6r4;z21eTY`y& zqmzMwfvqethk=Qe6U1g<%S>TlViN@!0MXCHF4WDyz#zcD!NJK9%D}+D1Tu$-O9CVc zHphUGjpG~0oD7C~Ms^-nMi4u-kb#kdQ=XB50b&dzCzk;u1A_qAO^jS%3nU;MZZ2I0 z1_lKPhlksYk%2*j0W1bGiW}@KPOuGJ4h#$oATz;&V1j{@gPW0ofd^zbcc(naZJZpc zj0_B%91~%VW#pIg0E^6>e1TE6zJ`&3fe)mRQAWmwk%56}Vg>_0m@ml+vH-*cVPO!# zz`(#bXE$7jq!?6(Km`M%q!P$&OcN8J+Qo2a{{`1BCT_zR3bqlXUrZUMUl3#!qaYW^ za1axO#X$tvdVvfEMnO4HU@%S05CDa&kTfV1m?kDb{2?r3F!>;pjJOyBGoKZ=HMb?V zr!WHpvkC(@w;eY#-{vn&D;W85^7GOazyv5gY@WligON+mP*cHD&qU9FVRJOwStdy- zsGVT<FfcH1F)%Q2GB7aAob1Rc&iH?FB&T`39#joX4(tR51_m26@oiAP7nFvne+}ga zLTQ*dl*<qXWx&KULFtKsfuRN>UJrLvDO6$-L;@~;4a%PfrC|o0h4K$UX_&Yulz$#d z!^8`q=HEdP=VoA-0F`(-c_OEHy)Bdn(+0D~A5FX&$`6CmAPSV1Y@x>If&`Gl`~+0I z7ESyyRJ;QsK3SYwuzo&-4G#jC-aTmIRZ#wMC=H@OZh)n=dmsTUZupHR{srm=Hjrip zhRL4=1O-hXY`7alH=pEgXJT}j9LQ(RDFI4F3=9k}CQsxuXS^`^B%eLw{mGpC_Dl>s zlfC%u82Kl6^4l{SOg_nP&$*ZdV*HZHf&%88?radA&g4J=bEaap$sd`;CNB`sV62#Y oQox>Z#$--Gdq$7Ro`N9lor3m^4<?@!wC7yG1JSl^@<d*F09Rp!mH+?% delta 1194 zcmaE$vO#5n2BX15&16Q)iM_h@9IOls3=GU*;-a_%0|NsS2Rn$z!or%FSHb|6mSAGx zXkuVsU@J?^VPInA1hE;|GE*3s*hE2EAUc@Xg<2RG7z7wNI5;`{V5Ty0Nq|Jb<`^)t zal8kalfl5q&hw9ffuWv(Ewzw=k%Lo$k%0kX3?nC(CL;rb0N53bTwn_%ARKNk69xtb z1qg?STc44EL4yG-1~Q8q>?}^O4P5RF3=AMM!Gd6dfs=!Uk%55+WH?Mf4y1&WqYLI( zMt&(rMg|5>j%kyxGs?=AGBPmmfdYe3M#hwpfq`ja1_M8sFUjgYS&&IoYYSY3q!?6% zKm`M%q!P$2OcN8J%Eh3{Kf{%ai6bc&Q-&!Q1e-3%WjeW^Nm>r%E2fDV0-zugk_Nez zX<`DzLBcYclTR?oh^sJgbK7w<^D!_mi!m_sS#eu)TXK5}Z~o1+f^qXkmK}`jnhKVB zCVB>&i`mXHG4f1y<P?|eW&~Noz#s~t7`PZ17&sXi7(Pxe<TPhAn7olooY8dhM^5p2 zXEYTnpnQKQ4bvG7HL(;;JRK_DjV68q%AXFUVdm_I@^?e%dbrcTan8WN0MiK5kOZ~h zDntWZeG^pt5t{gUDBlb!4>Jd5u?LEHFarZ94S@9cLnS~I69WT-El7}ofguefz`y{v zco$T>3{4#7z{bgr+~V~!&}3n{wxWsWK=}utG>8J(E)KQjI!FME?O)KupF!3Chlo#B z78DfJ1sQ~-mwoe3?sg_d+sTc5=A7X4z`($8Ve&yfbH<aCfAZNg-k5C3Z_jjrdvX=O z9V5r&o&5Hb>p55_|K+#loWlaKVA^Cy0dr0xHV98^a-)DbQw-Z=Lw2#r7X&mI6DI!@ luxD(TY$<5ZC^5MbOzsr4XFM_ar=UG&1rJ2qw#f&1<pCYrgt-6! diff --git a/src/list.o b/src/list.o index 88bda8f3337c0bbe8cc6e2b1a799f697edc15556..0c67936a4bfdd2003cf337723b4c50549f40f1e1 100644 GIT binary patch delta 1816 zcmexhxWH(F2IGT?n)0kW7#J8BCWg2ezwqb`5b)@B{o&Ca`oN<T#C+k=dHe-PzV$#U zpGUXr3y*FG4v*dd#@DR77(v=DYYDd=DCL6aau9e8F>SISqp6;QfJdk62Z$yHk8TE! zPLRnUBN$+&LL@^!cytO(ysZQ>i4$TH1Jt0CllvHxSwJqC{FTv!z2pGIvG?V~kZk3E zDL%Y+at@OMqu%6RrqUc6VO@~Jq1X^gGtN24z`($r!@y{x+{(bfz%(&~feR$ZXv|&< zqM<kuN;A&kVT7nR7K5tiu3%s^mIo<jnwY?yTFAg?JUNe9vtE}Cs)xY|%3z$62-U1B z1=Y+Cl48_V$zcT9oxmUfV(@|tW8mNbsfIX46U8wGAWaMm42*LYLCw<?hnfd<ygYkt zJya2hN(T{O4IiKy<Rw5Xril@PASp&AE{OgFp`z4c21aF0kPARz!NCENfH*=L%m%3k zVMGY3F+oB^S`wrdqzk0Jo`F#qMMD-y7uXR+Pz}OR4H2Lq6jp-R831vD2-HOx48kCN zjQp%7AR3A#p)}*1MNqT&VIj&O0+M6o7Durh9L`|NCtI?9Q8Hm*=Ck6q=C<Va6lRiO zU=T84VCFy;5T2~dCd(|M$1pjc&45vF@&Yz-COyW<JJ~GiSs5c)Weiw(cC#|BWmPd? z72vRC<-HE#^R8u8+Qq8Lz{JAn#i|6Nni!Z^nAp--xfz&PSlA+1xj=L?D<g>VW|cNz z<@(I3v<sw?%?qS-9$1Q%Es|BrfR*htE9(<h9&c8$QdX`KR)J<#&JtGU`chW5r>tCS zSsA@qB{2+`05`zUfR%&8mX%eXm5Za8m17qxqYtZ<FDnN}sXi+^M;a@?H!J5PR<3Oz zDK3AIr&PhF$zyX46B7d?V@`fvx<bz8P3#L9Cr5DVbLkmsDp=~7=ov6f?&Eah0|&7y zpFkUvGcTLl<VT!Fdf+IB2{9$|uyZgl$S^Q4)PSOhfq?;>hG6m;lbyJX_`qo!CX_z8 zi7QADRTU3A$K;K|(wn$F7!AQzGBALXh!6uK1B?$#9*PVM3?Ok0sC`+JD|zfCCqa2& za~T*If}pAnPrk^bZ>R+-#~2tGzz$(xV912ZMnT14nYj!qK4-EauQ=ylsI1}SK;C{v zr^yd_#Thdv3-XCGt^$+yz@+G8M?P^zr^$tU;*u3m9V`qC;3WI!KLktw$uhnJlcJj! z^2IYU{+-MypwBpGvY~*u<Z`GsJtz&Lm>3usq9!K_xHD=^UMZl@c^K-!OOqc8*fUO= ztSG3@q`@#bOHhxIfAUPh<&6B39fiatVWH9hRSq%+geOfd6cU$&8FBzkR%`M?A#q7q zXfS~62bG&pJZJJnA#ujPn_mj4GcxK;78Eh(6ySrH@L_VGh&f{(C@W1~Aff?fJrL30 z%mdlVz`$^DvY@CrCp;D>2a1|A>QC+zwP&oEd{We&i9u*GmzW*r8fd|4G<l+^{Nw^L z2}Xm-onrQ!_t+s8ZJB&g%$#!)CxoXnSy0@ZX&>k0g=}Jz6T~$b4@~Y9w`Y7X`J}i# jqsL@U34109?#W&fc8nd9J0<Kn6~N^U1H<mg6Gh|!4pux+ delta 1699 zcmZ2r^ucg~2IGc_n({mz$6bFgFfcH9bi4kT=<8zrz@t+D#P;Y8ec{m=0Aj!J=sf-c zq^9`?V<{h4^0)&BBLf4&YY~rb*B2h$4jdl60gMxmXo-N7u<rmVe$4?^+3g@OnUT@d zgTbTI^#epTgGaZ6fJdk64;U9}JcJwi1LA@YCl7z-m-`j!(fQP)vlgWGhetO<?Btn@ z$t(;W-Jz41Oq@#(fUQDO+5CnBr1~`v%yOtbKal)T@)#<~aq{r#$@xqQjM|eYFqIm5 z3G0F!4#k#GnsLrS1_lQ190o=&<yHm;2BwJ_3|t^NM!U&o%<?jJVo*`;3I;|y`C71& z1n$&A21dKdh0L0a=96bLODCF3L6z}?^_r{XFoMiVU=RQ?ctP42I5-j+85jh?3XIvo zLLfE+1A{1(W}LH#5#ktQaj1Dv$7oCzXOXYhkoW*LHbST<wU~iXhZAH7)5HW}kbXv8 zE|?w;4iF3C4Mi{;qyU7CKm-E=1LGVuCWuXnk|4DRZ;PO)FM_KtVq!1?hm#0YLj)*9 zM3f*-2!J?26z&9wHw7j?XOU+Vn9R;9D<K9qN+^eckq54FvL5RfX+1`JNoGDPZfkB! zZgojdVL?VAb_a>+PLhnmlMUEJgiRP=vYx_B5)2F?dW@4(*bJDonI=CJ7GwIzFnJxD zMSU|Xqc^LJ0V~gLR>rlgDh8~A9JZ|d*I5PDva;=FW!=Rp5XmZXlU1sTRltjts|BQ5 z+JKeqGf0Xjl9jiNm9d#s3L^4^mB*V^pp2EXgjKARm8*o6xtW#iDJ$1nkS<9BR^HvL zjHRrG2CN($wydoBtXv$$=BymMSQ&j;t$bNII7;<d**Vf!1-w}~CvOEwa0Rh4MzX3J zuyTB6W!Gor+zArojb>$R-h7jN4I@iNYGTUd7ES|pO$AFm6Fq~;`#9bBz=7t<C(y>^ z%**CGS%}L>4;&>hA*M_ob`Ayx83qQ18ff@}qZlTiIk||-h!32;U_w5VH*p0Cg3~`t zsDOu^WAZ~`>CFb*9*l-yI~f=lKv62hz{mjOOF}JBWME(biR(l8MUz+Z*h?;i^1#+J zFfar`Rb8IU$g6K?1u9RFQhFv-)*mYF1l3&z6`wdckyo7a6I9l6awBg)qvvEnK5@o^ z$&P&Dj61>PJ20s_xsXqsF?aGpK5@p@$rt&=86Sg5iOnzh;u#q~P4*Pfmz)SSN*zjr zG6yFE1H+oh69vQ>{U@&!aA&ld{82!k^D@*a4<~C1+A}VkoGGX;1@me$6GRfGdpYCe zS%P|uVv|n_E@u>*Tqq<i2~*ktQON+(0m2I>FBB4&gc*JSP1b7iMImuXSZFXn9SPD0 z!V@Pm3X3y-+AJxo&d8`e*-^xt^8qi!gd39^Ma-G9!P#K)1rZGxQ$SRMGaICrfq~)t zWJghR&K-OZ9TJlpMa>zlChrurXKbJRQ`Da6g5YE;F+0xfY!C%sCm$4%pS(a!f{|hJ zPBDAVHS7@aos${G%{fy+p~k?#pf%Z1+?=VO6O{iZPY~B&oG^K(xIN>B$v?&I86_rL dO4u{K;F??|VaFITd8dRu=LaE(DZ4?Y0|4`cRrUY? diff --git a/tests/htbl_tests.c b/tests/htbl_tests.c index 325c521..ad93ab6 100644 --- a/tests/htbl_tests.c +++ b/tests/htbl_tests.c @@ -23,6 +23,7 @@ void test_empty() { printf("test_empty OK\n"); } + void test_add() { char a[] = "Coucou 1"; char b[] = "Coucou 2"; @@ -50,7 +51,7 @@ void test_in() { htbl_add(htbl, b); assert(htbl_in(htbl, a)); assert(htbl_in(htbl, b)); - printf("test_in OK\n"); + printf("test_in OK\n"); } void test_destroy() { @@ -60,16 +61,16 @@ void test_destroy() { htbl_add(htbl, a); htbl_add(htbl, b); htbl_destroy(htbl); - printf("test_destroy OK\n"); + printf("test_destroy OK\n"); } + int main() { printf("=== HTBL tests ===\n"); test_empty(); - test_add(); - test_in(); - test_destroy(); + //test_add(); + //test_in(); + //test_destroy(); return 0; } - diff --git a/tests/rho_pollard.c b/tests/rho_pollard.c index de3d18a..377054f 100644 --- a/tests/rho_pollard.c +++ b/tests/rho_pollard.c @@ -16,6 +16,55 @@ unsigned long int gcd(unsigned long int a, unsigned long int b){ return old_r; } +unsigned long int f(unsigned long int x){ + return(x*x+1); +} + +unsigned long int rho_pollard(unsigned long int n){ + unsigned long int x = 2l; + unsigned long int y = 2l; + unsigned long int d = 1l; + while(d == 1){ + x = f(x) % n; + y = f(f(y)) % n; + //printf(%d, %d, x, y); + d = gcd(x-y, n); + } + return d; +} + +unsigned long int gcd_big(unsigned long int a, unsigned long int b){ + unsigned long int old_r, r = 1; + if(a < b){ + return gcd(b,a); + } + while(r != 0){ + old_r = r; + r = a % d; + a = b; + b = r; + } + return old_r; +} + +unsigned long int f_big(unsigned long int x){ + return(x*x+1); +} + +bignum_t rho_pollard_big(bignum_t n){ + bignum_t x = 2; + bignum_t y = 2; + bignum_t d = 1; + while(d == 1){ + x = f(x) % n; + y = f(f(y)) % n; + //printf(%d, %d, x, y); + d = gcd(x-y, n); + } + return d; +} + + int main() { // En utilisant l'algorithme rho de Pollard, factorisez les entiers suivants @@ -27,7 +76,7 @@ int main() { unsigned long int n6 = 15651941l * 15485863l; bignum_t n7, n8; - + n7 = bignum_mul(bignum_sub(bignum_pow(bignum_from_int(2), bignum_from_int(127)), bignum_from_int(1)), bignum_sub(bignum_pow(bignum_from_int(2), bignum_from_int(61)), @@ -38,10 +87,16 @@ int main() { bignum_sub(bignum_pow(bignum_from_int(2), bignum_from_int(2203)), bignum_from_int(1))); + printf("%ld \n", rho_pollard(n1)); + printf("%ld \n", rho_pollard(n2)); + printf("%ld \n", rho_pollard(n3)); + printf("%ld \n", rho_pollard(n4)); + printf("%ld \n", rho_pollard(n5)); + printf("%ld \n", rho_pollard(n6)); + - printf("PGCD(42,24) = %lu\n", gcd(42,24)); printf("PGCD(42,24) = %s\n", bignum_to_str(bignum_gcd(bignum_from_int(42),bignum_from_int(24)))); - + return 0; } -- GitLab