2012-01-29 6 views
1

J'ai ce nombre x que je dois trouver dans le (40 mod x) = 1arithmétique modulaire VB

une réponse possible pour x est 3 ou 39 comme il va dans le numéro 40 et laisse une reste de 1.

De quel type de code aurais-je besoin si je devais trouver toutes les réponses possibles de x?

Répondre

3

Mathématiquement, pour résoudre (a mod x) = b, il suffit de trouver tous les diviseurs de a-b qui ne sont pas des diviseurs de a. par exemple. pour (40 mod x) = 1, trouver les diviseurs de 40 - 1 (soit 39), qui sont 3, 13 et 39. Les diviseurs de 40 sont 2, 4, 5, 8, 10, 20, 40. Aucun des nombres dans le premier Pour , vous trouverez les diviseurs de 40 - 5 (soit 35), qui sont 5, 7 et 35. 5 est sur le la liste des diviseurs de 40, mais les deux autres ne sont pas, donc les solutions sont 7 et 35.

Bien sûr, pour un si petit nombre, il est plus de travail pour trouver tous les facteurs de a et a-b que c'est pour faire simplement toutes les divisions d'essai de a par , de sorte que le droite façon de résoudre votre problème est de prendre exactement la question que vous avez demandé et le mettre en code (pardonnez mon VB, je ne l'ai pas écrit tout au cours des 15 dernières années environ ...)

for x = 2 to 39 
    if (40 % x) = 1 
     MsgBox(x) 
    end if 
next 
0

La réponse à cette question est l'ensemble des facteurs entiers uniques de 39.

Vous pouvez les trouver en boucle 1-Math.Sqrt(39) et la vérification divisibilité.

+1

Seulement parce que 39 est coprime à 40. – hobbs

1
Enumerable.Range(1, 40).Where(Function(x) 40 Mod x = 1)