A4929 . Une récidive
L’auteur de l’énoncé du problème A1707 récidive avec une nouvelle proposition de problème qui contient trois taches rendant illisibles trois caractères d’une équation:
Déterminer les trois solutions en nombres premiers p et q de l’équation diophantienne :
Diophante subodore que les deux premières taches cachent chacune un signe « + » ou « – » et la dernière cache le dernier chiffre d’un entier à quatre chiffres.
Reconstituer les caractères rendus illisibles et déterminer les trois solutions.
---
Pour les deux premières taches, il y a 4 possibilités les 4 équations possibles : (A) : ,
(B) : , (C) : , (D) : .
Comme p et q doivent être premiers, r .
Un automate écrit en VBA Excel à recherches exhaustives entre 0 et 10000 pour les variables p et q permet de trouver les solutions en nombres premiers qui sont :
(A) : p^2 - 3pq + p + 9q + 2020 + r = 0
(r de 0 à 9)
(B) : p^2 - 3pq + p - 9q + 2020 + r = 0 (p et q de 0 à 10000) (C) : p^2 - 3pq - p + 9q + 2020 + r = 0 (p et q premiers) (D) : p^2 - 3pq - p - 9q + 2020 + r = 0
p
q
r ||
p
q
r ||
p
q
r || p q
r ||
|| || || ||
(A) || (B) || (C) ||
(D) ||
|| || || ||
|| || || ||
7 173 0 || 3 113 2 || 11 89 6 || 3 113 8 ||
23 43 8 || || 257 89 6 || 31 29 8 ||
|| || || 337 113 8 ||
|| || || 1013 337 0 ||
Il ressort du calcul précédent que les trois solutions pour le triplet (p, q, r) sont : (3, 113, 8) , (31, 29, 8) et (337, 113, 8)
---
Voici le source de cet automate pour le cas (D) : Dim ligne_courante As Variant
Dim var1 As Variant Dim var2 As Variant Dim var3 As Variant Dim résultat As Variant Dim increment As Variant Dim init_val1 As Variant Dim val_max1 As Variant Dim init_val2 As Variant Dim val_max2 As Variant Dim init_val3 As Variant Dim val_max3 As Variant Const ForReading = 1 Dim fs, f1
Dim repertoire As String dim chaine as string
dim nb_prim(1000) as variant dim i as variant
repertoire = "D:\nicolas\mathématiques_physique\formules\"
' ouverture en lecture du fichier des nombres premiers Set fs = CreateObject("Scripting.FileSystemObject")
Set f1 = fs.OpenTextFile(repertoire & "nombres_premiers.txt", ForReading, 0) i = val(1)
while val(i) < val(1001) nb_prim(i) = f1.readline i = val(i) + val(1)
Loop f1.close
init_val1 = 1 val_max1 = 1000 init_val2 = 1 val_max2 = 1000
init_val3 = InputBox("init_val3 = ") val_max3 = InputBox("val_max3 = ") increment = InputBox("increment = ")
ligne_courante = InputBox("ligne_courante = ") ligne_courante = Val(ligne_courante) - Val(1)
var1 = Val(init_val1)
Do While var1 < Val(val_max1) var2 = Val(init_val2)
Do While (var2 < Val(val_max2)) var3 = Val(init_val3)
Do While var3 < Val(val_max3)
nombre1 = val(nb_prim(val(var1))) nombre2 = val(nb_prim(val(var2)))
résultat = (Val(nombre1)) ^ (Val(2)) - (Val(3)) * (Val(nombre1)) * (Val(nombre2)) - Val(nombre1) - (Val(9)) * (Val(nombre2)) + Val(2020) + Val(var3)
If résultat = Val(0) Then
ligne_courante = Val(ligne_courante) + 1 Range("A" & ligne_courante).Select ActiveCell.FormulaR1C1 = Val(nombre1) Range("B" & ligne_courante).Select
ActiveCell.FormulaR1C1 = Val(nombre2) Range("C" & ligne_courante).Select ActiveCell.FormulaR1C1 = Val(var3) End If
var3 = Val(var3) + Val(increment) Loop
var2 = Val(var2) + Val(increment) Loop
var1 = Val(var1) + Val(increment) Loop
---