第34套试题答案及详解
【审题分析】分析题目可知,本题只要实现counValue()函数的功能即可。函数countValue()要实现的功能是:选出100以上、1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293),计算并输出上述这些素数的个数count以及这些素数值的和sum。凶此解答本题的关键在于如何判断一个数满足“个位数字与十位数字之和被10除所得余数等于百位数字,并且是素数”的条件。
【解题思路】用for循环对100到1000之间的每个整数进行判断扫描,用当前数除以100得到当前数的百位上的数字,用当前数对100求余再除以10得到当前数的十位上的数字,用当前数对10求余数得到当前数的个位上的数字;然后对当前数的十位上的数字与个位上的数字的和对10求余数,如果这个余数等于当前数字百位上的数字,则对当前数进行是否是素数的判断。
判断一个数是否是素数的算法是:如果存在一个从2开始到这个数的一半之间的数能被这个数整除,则这个数不是素数;否则这个数是素数。
题中,循环变量j从2递增到i/2,如果存在一个数j,使表达式i%j的值等于0,则当前数i不是素数,否则i是素数。计数变量count加1,把变量i的值加到变量sum中去。
【参考答案】
【易错分析】求当前数的十位上的数字时,用当前数对100求余再除以10得到十位上的数字。判断一个数是否是素数时,自变量i从2递增到i/2。
【考点链接】求一个数各个位上的数字、判断一个数是素数的算法。
责任编辑:小草