J'écris un programme dans C# qui doit trouver X où le plus grand commun diviseur de k2 et s est 1, x est plus petit que s et k1, k2, y, s sont des constantes. À l'heure actuelle, je le fais en mettant toutes les valeurs de X à zéro et en vérifiant si elles ont raison, mais cela prend beaucoup de temps quand j'ai plus de 40000 valeurs. Ou si c'est plus facile pour vous, vous pouvez essayer de désigner X à partir de y = x mod (s).Existe-t-il un moyen de désigner X dans y = (k1 + k2 × x) mod (s)?
Il y a un code J'utilise en ce moment pour le résoudre:
if (GCD(k2, k) == 1)
{
for (int i = 0; i < k; i++)
{
n1 = 0;
n = 0;
while(n < 1)
{
if(i == (k1 + k2 * n1) % k){
s1[n1] = s[i];
n++;
}
n1++;
}
}
}
Merci à l'avance.
P.S. Si quelque chose ne sait pas, alors laissez-moi savoir, il est un peu difficile pour moi d'expliquer tout cela: P
Vous voulez trouver le plus grand nombre que les deux nombres peuvent diviser? par exemple 4 pour 12 et 20? –
Pouvez-vous donner un exemple numérique avec des solutions que vous connaissez? Quelles sont les valeurs typiques de y, k1, k2, s et x? –
Indice: Savez-vous ce qu'est un * multiplicatif inverse *? –