%I #72 Jul 07 2022 08:45:06
%S 4,2,4,5,6,4,3,4,4,4,3,4,5,6,8,6,5,7,7,7,5,9,9,10,11,9,8,9,9,9,6,10,
%T 10,11,12,10,9,9,10,10,8,12,12,13,14,12,11,12,12,12,9,13,13,14,15,13,
%U 12,13,13,13,8,12,12,13,14,12,11,12,12,12,11,12,13,14,16,14,13,15,15,15,12,13
%N Number of letters in the French spelling of the number n, not counting hyphens and spaces.
%C Sequence A007005 is a variant of this sequence, where spaces and hyphens are counted.
%C In most languages, there exists a number N after which all numbers are written with fewer letters than the number itself. In English, in German and in French, N = 4. Here, if n > 4, then a(n) < n, and if n <= 4, then a(n) > n. - _Bernard Schott_, Jan 11 2019
%H Wiktionnaire, <a href="http://fr.wiktionary.org/wiki/Annexe:Nombres_de_1_%C3%A0_100_en_fran%C3%A7ais">Annexe:Nombres de 1 à 100 en français</a> (as of Nov. 18, 2009).
%H <a href="/index/Na">Index entries for sequences related to names of numbers</a>
%e The terms a(0),...,a(16) represent the number of characters in the strings "zéro", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize".
%e Since spaces and punctuation are not counted, a(n) is less than the length of the character string whenever the spelling of n contains hyphens, as in "dix-sept" (a(17)=7), or spaces as in "vingt et un" (a(21)=9).
%o (PARI) apply( {A167507(n)=#[0|c<-Vecsmall(French(n)), c>96]}, [0..81]) \\ updated by _M. F. Hasler_, Feb 19 2020 [If old versions of PARI/gp give an error, use e.g. Vec(Vecsmall...).]
%o /* Helper function: spell out n in French. Extended to 10^24 (now further extensible via the 2nd optional argument) for A204593 on Feb 16 2012. */
%o French(n, t=[10^18,"trillion", /*10^15,"billiard",*/ 10^12,"billion", 10^9,"milliard", 10^6,"million"])={ if( n>999, n>=10^6*t[1] & error(n" is too large - this implementation is restricted to n < 10^",5+#Str(t[1])); forstep(i=1,#t,2, n\t[i] & return(Str(French(n\t[i])" "t[i+1], if(n\t[i]>1,"s",""), if(n%t[i],Str(" "French(n%t[i])),"")))); return(Str(if(n\1000>1,Str(French(n\1000)," "),""),"mille",if(n%1000,Str(" ", French(n%1000)),""))));
%o n<20 & return([ "zero","un","deux","trois","quatre","cinq","six","sept","huit","neuf", "dix","onze", "douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf"][n+1]);
%o n >= 100 & return( Str( if( n>199, Str(French(n\100)," "), ""), "cent", if(n%100,Str(" ",French(n%100)),if(n>199,"s","")/*deux cents*/)));
%o n > 80 & return( Str( "quatre-vingt-", French( n-80 )));
%o n%10==0 & return( Str( ["vingt","trente","quarante","cinquante","soixante", "soixante-dix","quatre-vingts"][n\10-1] ));
%o Str( French((n\10-(n>70))*10), if(n%10==1," et ","-"), French(n%10+10*(n>70)))}
%o \\ _M. F. Hasler_, Nov 19 2009
%Y Cf. A005589 (English analog), A167508 (counts distinct letters).
%Y Cf. A001050 (Finnish analog), A006994 (Russian analog), A007208 (German analog), A011762 (Spanish analog), A026858 (Italian analog).
%K nonn,word
%O 0,1
%A _M. F. Hasler_, Nov 18 2009
%E Keyword "fini" removed by _M. F. Hasler_, Nov 19 2009
%E a(80) and a(81) corrected by _Bernard Schott_, Feb 19 2020
|