|
|
|
|
Bonjour,
je voudrais calculer le modulo d'un nombre a 15 chiffres maxi exemple: 123456789012345%97
sa a l'aire simple mais je ne n'arrive ni a enregistrer un aussi grand nombre dans une variable a ni a utiliser l'opérateur modulo car le nombre n'est pas un int
merci
c surmnt pcq la vitesse de la lumière est plus grande ke celle du son, k1 c** parait brillant avant d'avoir parlé.
Tout dépend de ce que tu utilises. Par exemple sous linux avec bc ça se fait sans problème :
(mando@aldur) (~) $ bc bc 1.06.94 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 123456789012345%97 12 Par contre c'est vrai qu'en C par exemple, même avec des long long int ça ne marche pas... |
Effectivement :
#include <stdio.h>
int main(){
long long int x = 123456789012345;
printf("%lld\n",x % 97);
return 0;
}
... me donne : (mando@aldur) (~) $ gcc -W -Wall plop.c plop.c: In function ‘main’: plop.c:4: warning: integer constant is too large for ‘long’ type Ceci dit malgré le warning, le programme donne bien 12... Quand j'ai vu le warning je n'ai même pas pris le temps de tester :p |
La technique (je pense) la plus simple si tu veux pouvoir gérer des nombres énormes, c'est de les saisir en tant que chaine de caractères, que tu fractionnes ensuite dans plusieurs int (ils sont gentils les int :)) après t'as juste à faire une petite fonction qui te prendre ce tableau (unicolonne) de int et t'en fais ce que tu veux ^^.
|