能被3整除整数的文法表示
解答:由数学知识可以得到,如果某整数的每个位上的数字相加之和可以被3整除,则此整数可以被3整除。
然而直接求和不太合适,应此可以利用这个特性,将一个数每个位置拆开,分别对3进行整除,得结果,无非余0即可整除,余1,余2,将这几种情况分别表示为不同的三种组态,并且可以相互转换。
由此,我们用是否可以被3整除为标准,将0-9这十个数字分成三组。
可以被3整除:0、3、6、9
整除余1:1、4、7
整除余2:2、5、8
文法表达式为:G=(VN ,VT ,P,S),其中
VN ={S,A,B},非终结符集合
VT ={0,1,2,3,4,5,6,7,8,9},终结符集合
对于P:
首先,在数字中加上{0,3,6,9}此类数字时,不影响数字的整除性;将1,4,7中的任意一个数字与2,5,8中的任意一个相加,可以被3整除。
对开始符S:
1.
若和0,3,6,9组合,无影响,即S->(0|3|6|9)S|ε,其中ε为空串,用来结束这个字符串。
若和1,4,7组合,我们用一个非终结符A来表示,有S->(1|4|7)A;
若和2,5,8组合,我们用一个非终结符B来表示,则S->