编译原理学习——能被3整除数的文法表示

博客介绍了如何利用编译原理中的文法表示法来判断一个整数是否能被3整除。通过将数字分为三组,0,3,6,9;1,4,7;2,5,8,建立非终结符S,A,B的产生式,从而推导出整除关系。" 129292178,7305312,Redis深度解析:从单线程到多线程的演进与实战,"['Redis', '分布式', '数据库', '高并发', '数据存储']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

能被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->࿰

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值