A385 - Têtes de série
Solution proposée par Marc Foubert
Énoncé
Q1. Nous sommes trois entiers positifs distincts à sept chiffres communément appelés nombres de Niven (ou encore nombres Harshad) qui sont divisibles par la somme de leurs chiffres (en base 10). Nous avons les caractéristiques suivantes :
- chacun de nous est le premier terme d’une suite de cinq entiers consécutifs croissants qui sont eux aussi des nombres de Niven ;
- nous avons la même somme de nos chiffres respectifs qui est un nombre premier et parmi les sommes des chiffres des quatre entiers qui nous suivent, on trouve deux puissances parfaites d’ordre
≥2.
Qui sommes-nous ?
Q2. Je suis un nombre de Niven à neuf chiffres. Les huit entiers qui me suivent ont la même propriété et parmi les sommes de leurs chiffres on trouve un nombre premier et deux puissances parfaites d’ordre≥2.
Qui suis-je ?
Solution
Q1. Le code donné en annexe 1 permet de balayer les nombres à 7 chiffres et d’éliminer les candidats : - Dont la somme des chiffres n’est pas un nombre premier ;
- Qui ne sont pas des nombres de Niven ou dont l’un au moins des 4 entiers qui les suivent n’est pas un nombre de Niven ;
- Dont les sommes des chiffres des quatre entiers qui le suivent, ne contiennent pas au moins deux puissances parfaites d’ordre≥2.
Cela permet de déterminer que les entiers cherchés sont1614623,3229223et8073023, tous trois présentant une somme de leurs chiffres égale à 23.
Q2. Le code donné en annexe 2 permet, avec un peu de patience, de trouver selon le même principe que le nombre cherché est124324220, dont la somme des chiffres vaut 20. Parmi les sommes des chiffres qui suivent, on trouve 23, un nombre premier, ainsi que 25 et 27, deux carrés parfaits d’ordre
≥2.
Annexes
1 def i s _ N i v e n ( n ) :
2 d i g i t _ s u m = g e t _ d i g i t _ s u m ( n )
3 r e t u r n n % d i g i t _ s u m == 0
4
5 def g e t _ d i g i t _ s u m ( n ) :
6 rep = 0
7 for i in str( n ) :
8 rep += int( i )
9 r e t u r n rep
10
11 def i s _ p r i m e ( n ) :
12 # R e n v o i e T r u e si un e n t i e r est premier , F a l s e s i n o n .
13 if n <= 1:
14 r e t u r n F a l s e
15 i = 2
16 w h i l e i **2 <= n :
17 if n % i == 0:
18 r e t u r n F a l s e
19 i += 1
20 r e t u r n T r u e
21
22 p e r f e c t _ p o w e r s = {4 , 8 , 16 , 32 , 9 , 27 , 16 , 25}
23
24 for k in r a n g e( 1 0 0 0 0 0 0 , 9 9 9 9 9 9 9 ) :
25 c r i t = T r u e
26 n b _ p e r f e c t _ p o w e r s = 0
1
27 if not i s _ p r i m e ( g e t _ d i g i t _ s u m ( k ) ) :
28 c o n t i n u e
29 for i in r a n g e(5) :
30 if not i s _ N i v e n ( k + i ) :
31 c r i t = F a l s e
32 b r e a k
33 if g e t _ d i g i t _ s u m ( k + i ) in p e r f e c t _ p o w e r s :
34 n b _ p e r f e c t _ p o w e r s += 1
35 if c r i t and n b _ p e r f e c t _ p o w e r s >= 2:
36 p r i n t( k , g e t _ d i g i t _ s u m ( k ) )
37 p r i n t(" ", k +1 , g e t _ d i g i t _ s u m ( k +1) )
38 p r i n t(" ", k +2 , g e t _ d i g i t _ s u m ( k +2) )
39 p r i n t(" ", k +3 , g e t _ d i g i t _ s u m ( k +3) )
40 p r i n t(" ", k +4 , g e t _ d i g i t _ s u m ( k +4) )
Listing 1 – Code python pour la résolution de la question 1
1 p e r f e c t _ p o w e r s = {4 , 8 , 16 , 32 , 9 , 27 , 16 , 25 , 64 , 81}
2
3 for k in r a n g e( 1 0 0 0 0 0 0 0 0 , 9 9 9 9 9 9 9 9 9 ) :
4 if not i s _ N i v e n ( k ) :
5 c o n t i n u e
6 c r i t = T r u e
7 for i in r a n g e(1 , 9) :
8 if not i s _ N i v e n ( k + i ) :
9 c r i t = F a l s e
10 b r e a k
11 if c r i t :
12 p r i n t( k , g e t _ d i g i t _ s u m ( k ) )
13 p r i n t( k +1 , g e t _ d i g i t _ s u m ( k +1) )
14 p r i n t( k +2 , g e t _ d i g i t _ s u m ( k +2) )
15 p r i n t( k +3 , g e t _ d i g i t _ s u m ( k +3) )
16 p r i n t( k +4 , g e t _ d i g i t _ s u m ( k +4) )
17 p r i n t( k +5 , g e t _ d i g i t _ s u m ( k +5) )
18 p r i n t( k +6 , g e t _ d i g i t _ s u m ( k +6) )
19 p r i n t( k +7 , g e t _ d i g i t _ s u m ( k +7) )
20 p r i n t( k +8 , g e t _ d i g i t _ s u m ( k +8) )
Listing 2 – Code python pour la résolution de la question 2
2