Nombre Premier message EconvertError

Dl14013 -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

Salut tout le monde;
j'ai crée une petit application en Delphi pour test si le nombre a est premier ou non-premier jusque maintenant mon programme et bien tester mais je trouve un problème Dans présentation d'un nombre plus grand(super) de 10 chiffres montrant un message d'erreur ? EconvertEror
Merci pour La reponse
A voir également:

7 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Avec quels types de données travailles-tu ? Parce qu'au dessus de 10 chiffres on ne peut plus travailler avec les integer (limité à 2 147 483 647) !
1
nicocorico Messages postés 846 Statut Membre 138
 
C'est que ton type de variable doit atteindre ses limites, je suppose que tu doit utiliser un double et tu peux passer à l'extended, mais c'est le maximum que Delphi te proposeras...
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Il faut se méfier des types de données flottants, car ils introduisent des approximations dans les calculs, or pour chercher les nombres premiers il faut manipuler des valeurs exactes !
0
nicocorico Messages postés 846 Statut Membre 138
 
oui c'est vrai, j'étais dans l'idée de ne pas se servir de la virgule évidemment!
Sinon il y a les type Int64 ou QWord permettant 2^63 combinaisons, difficiles à représenter en décimal...

Un lien pour des unités delphi pour traiter des très grands nombres :
http://www.phidels.com/php/index.php3?page=../php/pagetelechargementzip.php3&id=627
0
Dl14013 Messages postés 8 Statut Membre
 
Merci pour la réponse mais:
mon application comme ça
procedure TForm1.Button1Click(Sender: TObject);
var m:Comp;
a:Integer;
begin
m:=strtoFloat(Edit1.Text);
a:=Trunc(m);
J'ai déclarer m:reel,comp,integer,double,Extended mais meme problème
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KX Messages postés 19031 Statut Modérateur 3 020
 
Le mieux c'est Int64 mais tu seras quand même limité en atteignant les 19 chiffres :

procedure TForm1.Button1Click(Sender: TObject);
var a:Int64;
begin
     a:=StrToInt64(Edit1.Text);
end;
0
Dl14013 Messages postés 8 Statut Membre
 
oui et merci mais je veux une méthode pour écrie un numéro illimité.
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Tu ne pourras pas le faire avec des types simples. Il faut que tu utilises une librairie de grand nombres.
Soit tu la fait toi même, soit tu en trouves une sur internet (comme FGInt).
0