27/11/07 14:43
johntiror
Ciao a tutti! In questi giorni stavo cercando di realizzare un programma che codificasse dei messaggi con la crittatura RSA e mi sono inbattuto nel programma BigNumber. Ho notato che non esegue bene le differenze (ed infatti il creatore lo aveva scritto nel source) ed ho provato a scrivere io l'algoritmo... Non so se è il posto giusto per postarlo.
P.S. sono alle prime armi con la programmazione quindi è inevitabile che si può migliorare di molto il codice da me scritto, però direi che funziona anche con numeri molto grandi
P.S. sono alle prime armi con la programmazione quindi è inevitabile che si può migliorare di molto il codice da me scritto, però direi che funziona anche con numeri molto grandi
#include <stdio.h> #include <stdlib.h> #include <BigNumber.h> int main(int argc, char *argv[]) { LUN_BNUM=100; BigN n,l; n=bIntero(); l=bIntero(); bLeggi(n); bLeggi(l); int i,c,lris,p; if (n->lun==l->lun) { //calcola il numero di cifre che avrà il risultato i=n->lun; while (n->pun[i]==l->pun[i] && i>1) { i--; } if (n->pun[i]-l->pun[i]==1 && n->pun[i-1]<l->pun[i-1]) { i--; } while (n->pun[i]==0 && l->pun[i]==9) { i--; } if (i==0) { i=1; } lris=i; } if (n->lun > l->lun) { c=n->lun; if (n->lun - l->lun==1 && n->pun[c]==1 && n->pun[c-1]<l->pun[c-1]) { c--; } while (n->pun[c]==0 && l->pun[c]==9) { c--; } if (n->lun - l->lun > 1) { p=l->lun; if (n->pun[p] < l->pun[p] && n->pun[p]==0) { while (n->pun[p]==0) { p++; } } if (p==c && n->pun[c]==1) { c--; } if(n->pun[c]==0) { c--; } } if (c==0) { c=1; } lris=c; } BigN ris; int z=1,d; ris=bIntero(); while (z<=lris) { //esegue la sottrazione if (n->pun[z] < l->pun[z]) { ris->pun[z] = 10+(n->pun[z]) - l->pun[z]; if (n->pun[z+1] != 0) { n->pun[z+1] = n->pun[z+1] - 1; } else { n->pun[z+1] = 9; d=z+2; while (n->pun[d]==0) { n->pun[d]=9; d++; } n->pun[d] = n->pun[d] - 1; } z++; } else { ris->pun[z] = n->pun[z] - l->pun[z]; z++; } } while (lris > 0){ printf ("%d", ris->pun[lris]); lris--; } printf("\n"); system("PAUSE"); return 0; }
Ultima modifica effettuata da johntiror 28/11/07 8:52
aaa