Bonjour, mon problème est le suivant, lorsque j'exécute mon code ci-dessous j'ai mes variables p.var et q.var qui sont identiques or lorsque je met un point d'arrêt sur la ligne et que lance mon prog, ils ne sont pas identiques donc je n'arrive pas à voir d'où vient le problème.


Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace AlgorithmeRSA
{
    class GNP
    {
        #region Données
        private double val;
        #endregion
 
        #region Constructeur
        public GNP()
        {
            Random r = new Random();
 
            this.val = r.Next(0, 99);
            while (this.EstPremier())
            {
                this.val = r.Next(0, 99);
            }
        }
        #endregion
 
        #region Accesseur
        public double getVal()
        {
            return this.val;
        }
 
        public void setVal(int val)
        {
            this.val = val;
        }
        #endregion
 
        #region Fonctions
        public Boolean EstPremier()
        {
            int i;
 
        // Inférieur à 2 : pas premier
            if (this.val < 2) 
                return false;
 
        // Egal 2 : premier
            if (this.val == 2) 
                return true;
 
        // Nombre pair autre que 2 : n'est pas premier
            if ((this.val % 2) == 0) 
                return false;
 
        // Teste tous les diviseur inférieur au nombre (de 2 à x-1)
            i = 3;
           while(i*i <= this.val)
            {     
        // Si on peut diviser ce nombre : il n'est pas premier
           if ((this.val % i) == 0) 
               return false;
 
        // Passe au prochain diviseur
        i++;
        };
 
        // Aucun nombre compris entre 2 et Racine(x)
        // ne le divise : il est premier
        return true;
        }
        #endregion
    }
 
 
    class Program
    {
        static void Main(string[] args)
        {
            double n, phi;
            GNP p = new GNP();
            GNP q = new GNP();
            Console.WriteLine(p.getVal());
            Console.WriteLine(q.getVal());
            n = p.getVal() * q.getVal();
            phi = (p.getVal() - 1) * (q.getVal() - 1);
            Console.WriteLine(n);
            Console.WriteLine(phi);
            Console.ReadLine();
 
        }
    }
}