定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。 例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。
时间: 2023-05-31 14:20:04 浏览: 304
### 回答1:
根据定理,我们可以先把n的个位数字去掉,然后从余下的数中减去个位数的5倍,判断差是否是17的倍数。如果是,那么n就是17的倍数,否则不是。
具体步骤如下:
1. 将n除以10,得到n的十位及以上的数字,记为m。
2. 计算n的个位数字乘以5,记为k。
3. 计算m-k,得到差d。
4. 判断d是否是17的倍数,如果是,说明n是17的倍数,否则不是。
代码实现如下:
n = int(input())
m = n // 10
k = (n % 10) * 5
d = m - k
if d % 17 == 0:
print("是17的倍数")
else:
print("不是17的倍数")
### 回答2:
这个定理可以用数学归纳法证明。假设对于所有的两位数,该定理都成立。现在我们来证明对于任意n位数(n>2),该定理也成立。
假设n位数是$a_na_{n-1}\cdots a_2a_1$,其中$a_n$是最高位,$a_1$是个位。 先把$a_1$去掉,剩下的数是$a_na_{n-1}\cdots a_2$。 根据归纳假设,$a_na_{n-1}\cdots a_2$是17的倍数,当且仅当$a_na_{n-1}\cdots a_2-5a_1$是17的倍数。
现在考虑$a_na_{n-1}\cdots a_2-5a_1$与$a_na_{n-1}\cdots a_2$之间的关系。可以把$a_na_{n-1}\cdots a_2$写成$10^{n-1}a_n+10^{n-2}a_{n-1}+\cdots +10a_3+a_2$的形式,$a_na_{n-1}\cdots a_2-5a_1$可以写成$10^{n-1}a_n+10^{n-2}a_{n-1}+\cdots+10a_3+(a_2-5a_1)$的形式。因此,
$$a_na_{n-1}\cdots a_2-5a_1=a_na_{n-1}\cdots a_2+(a_2-5a_1)-10a_2$$
化简可得
$$a_na_{n-1}\cdots a_2-5a_1=a_na_{n-1}\cdots a_2-9a_2-5a_1$$
由于$a_na_{n-1} \cdots a_2$是17的倍数,所以:
$$a_na_{n-1}\cdots a_2-9a_2-5a_1=a_na_{n-1}\cdots a_2-10a_2+a_2-5a_1$$
$$=a_na_{n-1}\cdots a_2+(a_2-5a_1)-10a_2$$
即$a_na_{n-1}\cdots a_2-5a_1$也是17的倍数。因此,定理对于任意的正整数都成立,证毕。
现在我们可以使用该定理来判断一个数是否是17的倍数。如果这个数的个位数字为$a_1$,剩余的数字为$b$,那么$a_1-5b$是否为17的倍数就可以判断这个数是否是17的倍数。如果是17的倍数,那么可以用数学归纳法证明对于任意的n位数也是成立的。
### 回答3:
这个定理可以用数学归纳法来证明。首先考虑两位数,一个两位数可以表示为$10a+b$,其中$a$为十位数,$b$为个位数,假设$b-5a$是17的倍数,那么可以得到:
$10a+b-5b+5a=5(2a-b)$
因为$b-5a$是17的倍数,并且17是质数,所以$2a-b$也必然是17的倍数,即$10a+b$是17的倍数。
接下来考虑三位数,一个三位数可以表示为$100a+10b+c$,如果先把个位数$c$去掉之后,剩下的数字是$100a+10b$,根据假设可知$b-5a$是17的倍数。将$100a+10b$减去$5c$,得到:
$100a+10b-5c=5(20a+2b-5c)$
由于$b-5a$是17的倍数,得到$20a+2b-5c$也是17的倍数,即$100a+10b+c$是17的倍数。
可以继续用归纳法证明更多位数的情况,在这里不再详细展开。
接下来,看题目中的问题。输入一个正整数$n$,需要判断它是否是17的倍数。这个问题可以转换为,将$n$的个位数字去掉,再从余下的数中减去个位数的5倍,判断是否是17的倍数。
首先用取余运算将$n$的个位数取出来,然后从$n$中去掉个位数:
$num=n\%10$
$n=(n-num)/10$
接下来,将去掉个位数的数字减去个位数的5倍:
$result=n-5*num$
最后,用取余运算判断是否是17的倍数:
if(result%17==0):
print("是17的倍数")
else:
print("不是17的倍数")
阅读全文